从 Web 服务响应中解析单个 XML 节点

Posted

技术标签:

【中文标题】从 Web 服务响应中解析单个 XML 节点【英文标题】:Parsing Single XML Node From Web Service Response 【发布时间】:2017-07-04 02:09:30 【问题描述】:

我在这个一般领域看到了一些问题,但找不到任何特定于 Java 和提取单个节点值的内容。

我有一个 Web 服务,它返回格式如下:

<string xmlns="http://tempuri.org/">Hello</string>

android 应用程序中,我试图检索中间没有 XML 标记的“Hello”部分。

我目前有这样的方法:

public static String getParsedString(String xml)

    try
    
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        InputSource input = new InputSource();
        StringReader stringReader = new StringReader(xml);
        input.setCharacterStream(stringReader);

        Document document = documentBuilder.parse(input);

        NodeList nodes = document.getElementsByTagName("string");
        return nodes.item(0).getNodeValue().toString();
    
    catch(Exception ex)
    
        ex.printStackTrace();
    

    return null;

然而被解析的节点显然不包含数据,当尝试toString()方法时,它会抛出以下错误。

java.lang.NullPointerException

我不确定我是否需要考虑文档解析器中的xmlns="http://tempuri.org/",但我想不通。

【问题讨论】:

先尝试xml根元素,然后寻找特定元素 【参考方案1】:

换行

return nodes.item(0).getNodeValue().toString();

return nodes.item(0).getTextContent();

【讨论】:

以上是关于从 Web 服务响应中解析单个 XML 节点的主要内容,如果未能解决你的问题,请参考以下文章

在 Web 服务中解析数据 Json 或 XML 哪个更快?

需要帮助从 C# 中的 Web 服务读取 xml 响应

如何使用 PHP 从 Web 服务获取 XML 数据?

为啥 XML 仍然用于 Web 服务响应,即使 JSON 更好? [关闭]

如何在 iOS 7 中解析从 .NET Web 服务收到的 JSON 响应

如何解析从 Web 服务响应收到的 JSON 响应