Java XML - 具有相同名称的嵌套元素

时间:2012-12-25 06:53:30

标签: java xml xml-parsing

如何使用Java XML访问具有相同名称和递归包含的元素?这在python ElementTree中有效,但由于某种原因,我需要在Java中运行它。

我试过了:

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 :(得分: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
}