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

时间:2017-02-15 12:07:43

标签: java android xml web-services parsing

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

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

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

在Android应用程序中,我正在尝试检索&#39; Hello&#39;在没有XML标签的情况下处于中间位置。

我目前有一个这样的方法:

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/",但我无法弄明白。

1 个答案:

答案 0 :(得分:2)

更改行

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

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