大家好,我正在尝试使用 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所以也许我需要换一种方式?
谢谢!
最佳答案
NodeList 仅返回节点,getElementsByTagName 仅适用于 Element node因此,您需要将 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");
}
关于java - 无法在 Xerces 或 Neko 中的节点上调用 getElementsByTagName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3314204/