gpt4 book ai didi

java - 从 HTTP XML 响应中提取元素 - HTTP 客户端和 Java

转载 作者:行者123 更新时间:2023-12-01 14:22:03 26 4
gpt4 key购买 nike

所以我已经从这里得到了帮助,所以我想为什么不再尝试一下!?任何建议将不胜感激。

我正在使用 HTTP 客户端并发出 POST 请求;响应是一个 XML 正文,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CartLink
xmlns="http://api.gsicommerce.com/schema/ews/1.0">
<Name>vSisFfYlAPwAAAE_CPBZ3qYh</Name>
<Uri>carts/vSisFfYlAPwAAAE_CPBZ3qYh</Uri>
</CartLink>

现在...

我有一个 HttpEntity

[HttpResponse].getEntity(). 

然后我通过说得到响应的字符串表示形式(在本例中是 XML)

String content = EntityUtils.toString(HttpEntity)

我尝试遵循这篇文章中的一些建议:How to create a XML object from String in Java?但它似乎对我不起作用。当我构建该文档时,它似乎仍然为空。

我的最终目标只是获取名称字段..即“vSisFfYlAPwAAAE_CPBZ3qYh”部分。那么我想建立一个文档然后提取它......?或者有更简单的方法吗?我一直在尝试不同的事情,但似乎无法让它发挥作用。

感谢大家的帮助,非常感谢!!

最佳答案

不要尝试使用字符串操作来提取值,而是尝试使用 Java 的内置功能来解析 XML。这是一个更好的方法。 Http 组件以 XML 格式返回响应 - 这是有原因的。 :)

这可能是解决您的问题的一种方法:

    // Parse the response using DocumentBuilder so you can get at elements easily
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(response);
Element root = doc.getDocumentElement();
// Now let's say you have not one, but 'n' nodes that contain the value
// you're looking for. Use NodeList to get a list of all those nodes and just
// pull out the tag/attribute's value you want.
NodeList nameNodesList = doc.getElementsByTagName("Name");
ArrayList<String> nameValues = null;
// Now iterate through the Nodelist to get the values you want.
for (int i=0; i<nameNodesList.getLength(); i++){
nameValues.add(nameNodesList.item(i).getTextContent());
}

ArrayList“nameValues”现在将保存“Name”标签中包含的每个值。您还可以创建一个 HashMap 来存储节点的键值对及其各自的文本内容。

希望这有帮助。

关于java - 从 HTTP XML 响应中提取元素 - HTTP 客户端和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com