大家好我试图用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
}
是我理想的选择。我似乎只能在文档本身上调用getElementsByTagName
?难道我做错了什么?我应该能够在Node
元素上调用它吗?
我可以从文档中看到它不存在:http://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html所以也许我需要以另一种方式做到这一点?
谢谢!
答案 0 :(得分:7)
NodeList仅返回节点,而getElementsByTagName仅在Element node上可用。因此,您需要将节点转换为元素,下面是一个示例。
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");
}
答案 1 :(得分:0)
是的,这很奇怪。 Python的xml.dom.minidom有一个Node.getElementsByTagName。也许它不是标准的一部分。相反,您可以在divs.item(i).parentNode().getChildNodes()
上迭代内部循环。