如何使用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>
答案 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
}