2012-12-25 70 views
-1

如何使用Java XML访问具有相同名称和递归包含的元素?这已经在Python ElementTree中工作,但由于某种原因,我需要在Java中运行。Java XML - 同名的嵌套元素

我曾尝试:

String filepath = ("file.xml"); 
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(filepath); 

NodeList nl = doc.getElementsByTagName("*/*/foo"); 

<foo> 
    <foo> 
    <foo> 
    </foo> 
    </foo> 
</foo> 
+1

您想要选择哪个节点?只有最内层的?深度是否固定,还是可以任意深度? –

+0

深度是固定的*/*/*/foo我在python元素树中有工作模型,但我的客户需要它在Java中(并且使用标准的javax.xml。*模块) – forvaidya

回答

2

你似乎是的印象是getElementsByTagName需要XPath表达式下。它没有。如文档所述:

以文档顺序返回所有元素的NodeList,其中包含给定的标记名称并包含在文档中。

如果您需要使用XPath,您应该查看javax.xml.xpath软件包。示例代码:

Object set = xpath.evaluate("*/*/foo", doc, XPathConstants.NODESET); 

NodeList list = (NodeList) set; 
int count = list.getLength(); 
for (int i = 0; i < count; i++) { 
    Node node = list.item(i); 
    // Handle the node 
} 
+0

谢谢,这有帮助。 – forvaidya