11

大家好,我正在尝试使用 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所以也许我需要用另一种方式来做?

谢谢!

4

2 回答 2

9

NodeList 仅返回 Nodes,而 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");
}
于 2011-06-23T14:04:24.003 回答
0

是的,这很奇怪。Python 的 xml.dom.minidom 有一个 Node.getElementsByTagName。也许它不是标准的一部分。相反,您可以在divs.item(i).parentNode().getChildNodes().

于 2010-07-23T03:40:00.097 回答