【问题标题】:Can't get XML tag value无法获取 XML 标记值
【发布时间】:2013-03-15 13:20:16
【问题描述】:

我有以下代码

protected static final String TAG_numFound                  = "numFound";        //
Document street_xmlDoc = GetXMLDocument(street_url);
Element results = street_xmlDoc.getDocumentElement();
//numFound
Node numFoundNode = results.getElementsByTagName(TAG_numFound).item(0);
String numFound = numFoundNode.getNodeValue() + "(" + numFoundNode.getNodeName() + ")";

以及以下 XML

<results>
<numFound>1</numFound>
<QTime>66</QTime>
<result>
<distance>0.0</distance>
<name>Agua</name>
</result>
</results>

在 numFound 字符串变量中,我得到“null(numFound)” 我不明白为什么我没有得到“1(numFound)”。 我做错了什么?

【问题讨论】:

    标签: java xmldocument


    【解决方案1】:

    您需要使用getTextContent 而不是getNodeValue

    阅读此blog post 了解更多信息。

    您可以在此 javadoc 部分(或以下快照)中查看 getNodeValue 何时具有任何含义。

    【讨论】:

    • 谢谢,解决了问题,现在我正在阅读您发布的链接。
    【解决方案2】:

    您可以使用XPath 来获取值,这对于您的代码的未来读者可能会更清楚:

        final Document document = //build your document
        final XPath xPath = XPathFactory.newInstance().newXPath();
        final XPathExpression expression = xPath.compile("//numFound/text()");
        final Number output = (Number) expression.evaluate(document, XPathConstants.NUMBER);
        System.out.println(output);
    

    输出:

    1.0
    

    【讨论】:

    • 谢谢,我从来没有听说过 XPath,它似​​乎比使用 NodeList 和 Element 容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多