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

2023-12-29

如何通过给定 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 file:

<html>
  <head>
  </head>
  <body>
  <p>
    <div></div>
    <div></div>
    <div><a>link</a></div>
  </p>
  </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 测试 C++ 代码的字节序无关性

    如何测试或检查 C 代码的字节序无关性 它已经实施了 我只想verify它适用于小端和大端平台 我可以编写单元测试并在目标平台上运行它们 但我没有硬件 也许模拟器 是否可以进行编译时检查 如果您可以使用基于 x86 的 Mac 那么您可以利
  • 在 if 条件下批处理多个操作

    有没有办法在 if 条件下放置多个操作 像这样 if not exist MyFolderName ECHO create a folder mkdir MyFolderName 您可以使用 连接命令并在同一行执行它们 所以你的语法应该是这
  • 添加 TabView 使导航栏不覆盖 SwiftUI 中的安全区域

    在我的 SwiftUI iOS 应用程序中添加 TabView 时 导航栏不再覆盖凹口 我尝试为 TabView 实现创建另一个文件 修改 SceneDeletage 等 这是一个没有 TabView 的简单代码 使导航栏覆盖安全区域 又名
  • python:为什么 IDLE 比终端慢?

    我刚刚编写了一个简单的 python 命令来检查 csv 文件中的大列表 csv 有 2 列和 10K 行 当我将第二行输入到列表中并稍后打印列表时 IDLE 需要相当长的时间才能显示终端 在 Mac 下 立即显示它的位置 顺便说一句 我在
  • 如何处理 Facebook 新的 UID 大小?

    我在 Facebook 应用程序上做了一些工作 但是当我注册一个新用户来测试朋友交互时 新用户获得了一个 uid 100000XXXXXXXXX 对于 php 来说处理起来似乎太大了 将数字保存到数据库中会产生相同的值 2147483647
  • 在 Umbraco 7 中使用 html 页面作为自定义部分,无需树

    我有一个 HTML 页面 想要在 Umbraco 7 的自定义部分中显示 我想在该部分中不包含任何树的情况下执行此操作 因为所有内容都已在 html 文件中处理 它被放置到 Umbraco 后端以方便访问 到目前为止 我已经实现了 IApp
  • Webpack style-loader / css-loader:url() 路径解析不起作用

    有一些关于的帖子style loader and css loader 但尽管如此 我仍然无法找到解决我的问题的方法 简而言之 当我 import css其他文件中的文件css文件 以及导入的css包含url 如果使用相对路径 则路径无法正
  • 删除 iOS/WebKit 文本区域中的 3 个像素

    我正在尝试创建一个textarea看起来完全像div 然而 在 iOS 上 有 3 个像素来自我无法删除的地方 这是我的代码 div test div hr
  • nginx默认无法打开index.php

    我的服务器定义有什么问题 如果我尝试访问 www testing com 我会下载一个二进制文件而不是index php 而如果我尝试访问 testing com 我会下载index php 我已经尝试将服务器名称设置为 servernam
  • 如何在文件中传递超过9个参数。 htaccess(mod_rewrite)?

    我在使用 mod rewrite apache 在 htaccess 文件中使用超过九个参数时遇到麻烦 例如 如果我传递参数 10 something mod rewrite 传递参数 1 的值 对此有什么解决方案吗 答案很简单 你不能 h
  • 最佳 Common Lisp IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以使用 CMake 创建 XCode (OCUnit) 的 iOS 单元测试目标吗?

    我目前使用 CMake 为静态库和应用程序目标创建 iOS xcode 项目 现在也想从 CMake 创建单元测试目标 但尚未找到有关 CMake 是否支持此功能或如何创建 octest 目标的任何资源 我可以从 CMake 创建这个吗 如
  • 如何在linux中为sed命令设置临时文件目录?

    我有 bash 脚本 它修改了这样的文件 sed i hello world d etc postfix virtual 我从网络应用程序运行了这个脚本 sed 命令在该目录中创建临时文件 但 Web 应用程序运行的用户没有在该目录中创建文
  • 用户“root”已超出“max_questions”资源(当前值:1)

    您好 我正在使用 MySQL Workbench 并且我不小心将 root 用户的 max questions 设置为 1 现在我已注销 并且无法登录 我等了 1 小时 但在测试连接时仍然收到错误 User root has超过 max q
  • Scala:以高效的方式将字符串迭代器写入文件

    我有数千个文件 50K 每个文件大约有 10K 行 我读取文件并进行一些处理 然后将这些行写回输出文件 虽然我的读取和处理速度更快 但将字符串迭代器转换回单个字符串并将其写入文件的最后一步需要很长时间 几乎一秒钟 我不会为整个过程进行数学计
  • 如何生成唯一的订单号?

    我正在寻找一种生成唯一订单 ID 的好方法 你能看出下面的代码有什么问题吗 int customerId 10000000 long ticks DateTime UtcNow Ticks long orderId customerId t
  • 我尝试将 postgresql md5 更改为 scram-sha-256,但出现 FATAL 密码身份验证失败

    我在用着postgresql作为学习的一部分 我尝试更改登录方法以获得更安全的登录方法 例如使用scram sha 256代替md5 我试图改变我的password encryption to scram sha256 in postgre
  • Ansible,字段 args 具有无效值[重复]

    这个问题在这里已经有答案了 我向我的 playbook yml 添加了一个名为 common 的角色 但配置失败并显示以下消息 TASK common Host is present gt cd fatal localhost FAILED
  • HTTP请求头X-Requested-With从哪里来

    众所周知 我们可以使用X Requested Withhttp请求头来判断http请求是否来自Ajax 许多 javascript 框架会自动添加X Requested Withajax请求中的header 比如jQuery Ajax ht
  • Java:如何通过 org.w3c.dom.document 上的 xpath 字符串定位元素

    如何通过给定 org w3c dom document 上的 xpath 字符串快速定位一个或多个元素 似乎没有FindElementsByXpath 方法 例如 html body p div 3 a 我发现当存在大量同名元素时 递归迭代