2012-12-25 69 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