【问题标题】:Extracting elements from an HTTP XML response--HTTP Client & Java从 HTTP XML 响应中提取元素--HTTP Client & Java
【发布时间】:2013-07-01 16:47:25
【问题描述】:

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

我正在使用 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 dom xml-parsing xmlhttprequest httpclient


    【解决方案1】:

    不要尝试通过字符串操作来提取值,而是尝试使用 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 来存储节点的键值对及其各自的文本内容。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多