-1

如何使用 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>
4

1 回答 1

2

您似乎认为getElementsByTagName采用 XPath 表达式。它没有。如文件所述:

返回具有给定标签名称并包含在文档中的所有元素的节点列表。

如果您需要使用 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
}
于 2012-12-25T07:58:22.350 回答