Java:如何通过org.w3c.dom.document上的xpath字符串定位元素 [英] Java: how to locate an element via xpath string on org.w3c.dom.document

查看:788
本文介绍了Java:如何通过org.w3c.dom.document上的xpath字符串定位元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How do you quickly locate element/elements via xpath string on a given org.w3c.dom.document? there seems to be no FindElementsByXpath() method. For example

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

我发现,当有很多相同元素的元素时,我会循环遍历所有子节点级别。任何建议?

I found that recursively iterating through all the child node levels to be quite slow when there are lot of elements of same name. Any suggestions?

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

I cannot use any parser or library, must work with w3c dom document only.

推荐答案

尝试这样:

//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.getDocumentElement(), 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>

这篇关于Java:如何通过org.w3c.dom.document上的xpath字符串定位元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆