Java:如何通过org.w3c.dom.document上的xpath字符串定位元素

时间:2011-06-30 17:44:36

标签: java dom xpath

如何通过给定org.w3c.dom.document上的xpath字符串快速定位元素/元素?似乎没有FindElementsByXpath()方法。例如

/html/body/p/div[3]/a

我发现,当存在大量同名元素时,递归遍历所有子节点级别会非常慢。有什么建议吗?

我不能使用任何解析器或库,只能使用w3c dom文件。

1 个答案:

答案 0 :(得分:90)

试试这个:

//obtain Document somehow, doesn't matter how
DocumentBuilder b = DocumentBuilderFactory.newInstance().newDocumentBuilder();
org.w3c.dom.Document doc = b.parse(new FileInputStream("page.html"));

//Evaluate XPath against Document itself
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList)xPath.evaluate("/html/body/p/div[3]/a",
        doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); ++i) {
    Element e = (Element) nodes.item(i);
}

使用以下page.html文件:

<html>
  <head>
  </head>
  <body>
  <p>
    <div></div>
    <div></div>
    <div><a>link</a></div>
  </p>
  </body>
</html>