如何获取节点标记之间的数据值

时间:2015-01-11 19:24:20

标签: xml xpath

XPath比较新,但真的需要帮助,感谢你的手。

我有以下XML文件:

<div id="current">

     <b> Current Data Ratio:</b>
     17.35
     <span class="neg">-0.23 (-0.84%)</span>
     <div id="timestamp">4:29 pm EST, Fri Jan  9</div>
</div>

我想获得数据值17.35。我的XPath代码如下:

     Node external_node = (Node) xPath.evaluate("//div[@id='current']", xmlDocument, XPathConstants.NODE);
    if(null != external_node) {
        NodeList nodeList = external_node.getChildNodes();
        for (int i = 0; null!=nodeList && i < nodeList.getLength(); i++) {
            Node internal_node = nodeList.item(i);
            if(internal_node.getNodeType() == Node.ELEMENT_NODE)
                System.out.println(nodeList.item(i).getNodeName() + " : " + internal_node.getFirstChild().getNodeValue()); 

        }
    }

然后我得到的是:

b : Current Data Ratio:

span : -0.23 (-0.84%)

div : 4:29 pm EST, Fri Jan  9

无法获得数据17.35。我将Node类型更改为Node.TEXT_NODE,如下所示:

if(internal_nod.getNodeType()== Node.TEXT_NODE

然后我没有得到任何回报。然后我尝试使用text()函数,似乎也无济于事。需要任何帮助。

1 个答案:

答案 0 :(得分:0)

鉴于此输入:

<div id="current">

     <b> Current Data Ratio:</b>
     17.35
     <span class="neg">-0.23 (-0.84%)</span>
     <div id="timestamp">4:29 pm EST, Fri Jan  9</div>
</div>

选择具有此XPath表达式//div[@id='current']/text()的节点会产生所需结果17.35