Java Can';在Xerces或Neko中的节点上调用getElementsByTagName?

Java Can';在Xerces或Neko中的节点上调用getElementsByTagName?,java,xml,dom,xerces,neko,Java,Xml,Dom,Xerces,Neko,大家好,我正在尝试使用Java中的Neko/Xerces解析DOM树 NodeList divs = this.doc.getElementsByTagName("DIV"); for(int i=0; i < divs.getLength(); i++) { NodeList images = divs.item(i).parentNode().getElementsByTagName("IMG"); // operate on these } nodelistdivs

大家好,我正在尝试使用Java中的Neko/Xerces解析DOM树

NodeList divs = this.doc.getElementsByTagName("DIV");
for(int i=0; i < divs.getLength(); i++) {
    NodeList images = divs.item(i).parentNode().getElementsByTagName("IMG");
    // operate on these
}
nodelistdivs=this.doc.getElementsByTagName(“DIV”);
对于(int i=0;i
这是我理想中想要做的。似乎我只能对文档本身调用
getElementsByTagName
?我做错什么了吗?我应该能够在
节点
元素上调用它吗

我可以从文件中看到它不在那里:所以也许我需要用另一种方式来做


谢谢

是的,这很奇怪。Python的xml.dom.minidom有一个Node.getElementsByTagName。也许这不是标准的一部分。相反,您可以在
divs.item(i).parentNode().getChildNodes()
上迭代一个内部循环,NodeList只返回节点,而getElementsByTagName只在上可用,因此需要将节点强制转换为元素,下面是一个示例

final NodeList images = ((Element)divs.item(i).getParentNode()).getElementsByTagName("IMG");
但是要小心,因为它假定getParentNode()总是返回一个元素

这样做会更安全,但会更加冗长

final Node n = divs.item(i).getParentNode();

if(n instanceof Element) {
    final Element e = (Element)n;
    e.getElementsByTagName("IMG");
}