2012-08-05 60 views
0

訪問XML中最低級別的子節點我有一個像XML級別的節點:如何通過DOM

<matrix1> 
    <row1> 
    <column>679</column> 
    <column>9</column> 
    </row2> 
    <row2> 
    <column>78</column> 
    <column>29</column> 
    </row2> 
<matrix1> 

我在這裏看到很多類似的事情,但不完全是這樣更有層次的子節點, 願我可以解析DOM後,跳過父節點直接訪問<column>679</column>?或每個級別迭代到最低的孩子獲得數值? 感謝您的幫助。

回答

0

一個XPath表達式可能是你在這裏需要的。您可以在那裏使用此模式選擇文檔中柱節點不管:

//column 

這裏是一個工作片段:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(____your XML InputStream____); 
XPathFactory xPathfactory = XPathFactory.newInstance(); 
XPath xpath = xPathfactory.newXPath(); 
XPathExpression expr = xpath.compile("//column"); 
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

檢查Java XPath API以獲取更多信息。

您還應該檢查XML輸入的語法。該矩陣1和ROW1沒有結束標記,這裏是修正XML:

<matrix1> 
    <row1> 
     <column>679</column> 
     <column>9</column> 
    </row1> 
    <row2> 
     <column>78</column> 
     <column>29</column> 
    </row2> 
</matrix1> 
+0

非常感謝你,幾分鐘前,我寫這個XML一個DOM支架,但我有一些疑問,都不行,和當它發生的時候,我嘗試這個XPath,並且最後一個問題:然後可以將列標記中的數字解析爲整數,如:int a = Integer.parseInt ...? – Maston 2012-08-05 13:07:56

+0

是的,你可以迭代NodeList並獲得第一個子文本( - > node.getFirstChild()。getTextContent()) – Sam 2012-08-05 20:38:00