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

问题描述:

因此,我已经从这里获得了帮助,所以我想为什么不再试一次!?任何建议将不胜感激。从HTTP XML响应中提取元素 - HTTP客户端和Java

我正在使用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) 

我试着按照这个p上的一些建议ost:How to create a XML object from String in Java?但它似乎并没有为我工作。当我建立文件时,它仍然显示为空。

MY END GOAL这里只是为了获得NAME字段,即“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”现在将举办包含在“名称”标签的每一个值。您还可以创建一个HashMap来存储节点的键值对及其各自的文本内容。

希望这会有所帮助。