2015-01-11 62 views
0

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.TEXT_NODE這樣的:

如果(internal_nod.getNodeType()== Node.TEXT_NODE

然後我什麼也沒有回來之後我又試着用文字()函數,好像沒有無論是幫助任何需要幫助

+0

XML可以像其他任何代碼一樣被格式化 - 縮進四個空格。我已經爲你做了。 –

+0

太棒了!感謝Mathias。 – Tommy

回答

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 expreession //div[@id='current']/text()得到想要的結果17.35

+0

Anders,用這兩行嘗試:Node external_node =(Node)xPath.evaluate(「// div [@ id ='current']/text()」,xmlDocument,XPathConstants.NODE); System.out.println(external_node.getNodeValue());但沒有得到任何回報 – Tommy

+0

我不會在java中運行你的程序,只是使用Notepad ++工具'XPathhenNPP'來運行XPath查詢 - 並且它可以工作,所以也許問題出在你的Java代碼中,而不是XPathExpression。我會*建議您使用調試器來調試代碼,而不是依賴打印輸出。 – Andersnk

相關問題