2012-08-05 32 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