当前位置: 首页 > 面试题库 >

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

陆栋
2023-03-14
问题内容

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

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

我发现,当有许多同名元素时,递归遍历所有子节点级别的速度非常慢。有什么建议?

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


问题答案:

试试这个:

//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>


 类似资料:
  • 你知道为什么吗?

  • 我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息

  • 问题内容: 我在字符串中有一个完整的XML文档,想要一个对象。Google会产生各种垃圾。什么是最简单的解决方案?(在Java 1.5中) 解决方案 感谢Matt McMinn,我决定完成此实现。对我来说,它具有适当级别的输入灵活性和异常粒度。(很高兴知道错误是来自格式错误的XML-还是来自错误的IO- 。) 问题答案: 在Java 1.5中,这对我有效-我去除了一些特殊的可读性。

  • 我确实尝试过一些XPath,但似乎运气不好。 我想点击国家,然后点击图表,截图如下: 网站网址为:https://demos.telerik.com/kendo-ui/bar-charts/column 我尝试了XPath:

  • 这只是代码的一个片段,但我如何将其合并以查找以任何顺序包含这两个关键字(keyword1、keyword2)的元素呢?这听起来很容易原则上,它可能是,但我有一个地狱的时间试图得到这个。任何建议都将不胜感激,谢谢。

  • 嗨,我是一个相当新的硒。可以有人请建议如何定位和元素在iframe asi是得到错误下面。 带有Iframe标记的DOM按钮元素的屏幕截图 以前编写的代码