XPath 和 Regexp 哪个更快?

2024-04-22

我正在为 firefox 制作一个附加组件,它使用 ajax 加载一个 html 页面(附加组件有它的 XUL 面板)。

现在,我没有寻找创建document对象并将ajax请求内容放入其中,然后使用xPath找到我需要的内容。
相反,我加载内容并将其作为带有正则表达式的文本传递。

但我有一个问题。使用 xPath 或正则表达式哪个更好?哪个执行速度更快?

HTML 页面将由数百个包含相同文本的元素组成,我基本上想做的是计算有多少个元素。

我希望我的附加组件尽快运行,但我不知道 regexp 或 xPath 背后的机制,所以我不知道哪个更有效。

希望我说清楚了。谢谢


每当您处理 XML 时,请使用 XPath(或 XSLT、XQuery、SAX、DOM 或任何其他 XML 感知方法来浏览数据)。Do never使用正则表达式来完成此任务 https://stackoverflow.com/a/1732454/111575.

为什么? XML 处理非常复杂,需要处理其所有奇怪之处、外部/已解析/未解析实体、DTD、处理指令、空白处理、折叠、unicode 规范化、CDATA 部分等。very很难创建可靠的正则表达式方式来获取数据。只要考虑一下业界花费了多年的时间来学习如何最好地解析 XML,这应该是足够的理由不要尝试自己做这件事.

回答你的问题:当谈到速度时(应该not是您在这里最关心的问题),它很大程度上取决于 XPath 或 Regex 编译器/处理器的实现。有时,XPath 会更快(即,如果可能的话,使用键或编译的 XSLT),其他时候,正则表达式会更快(如果您可以使用预编译的正则表达式并且查询很容易)。但正则表达式对于 HTML/XML 来说从来都不容易,因为匹配嵌套括号(标签)问题,仅使用正则表达式无法可靠地解决这个问题。

如果输入很大,正则表达式往往会更快,除非 XPath 实现可以进行流处理(我相信这不是 Firefox 内部的方法)。

你写了:

“哪个更有效”*

它可以让您以相对较快的速度最快地实现可靠且稳定的实施。使用 XPath。如果您需要从浏览器运行代码,那么 Firefox 和其他浏览器中也会使用它。

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

XPath 和 Regexp 哪个更快? 的相关文章

  • contenteditable,在文本末尾设置插入符号(跨浏览器)

    输出在Chrome div style border 1px solid 000 width 500px height 40px hey div what s up div div div div
  • Android 上的 Chrome 强制隐藏地址栏

    我最近开发了一个获取混合 http https 内容的网站 因此 我总是将地址栏显示在顶部 它不会像其他网站那样自动隐藏 这就是我要说的 This https planetkde org 是网站的链接 内容是从各种来源获取的 因此无法过滤非
  • 定时器内嵌套异步等待 - 不返回所需的值

    我必须使用 Mocha 和 chai 测试来测试端点的响应 下面是相同的代码 async function getData userId let response let interval setInterval async gt resp
  • 从 Linux bash 解析 FB-Purity 的 Firefox idb(索引数据库 API)object_data blob

    我想从 Linux bash 脚本中读取由名为 FB Purity 的特定 Firefox 插件存储的结构化数据 我找到了一个名为 mozilla firefox b8eab5j0 default storage default moz e
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • History.pushState和页面刷新

    我开始研究 HTML5 新历史 API 不过 我有一个问题 如何处理页面刷新 例如 用户单击一个链接 该链接由 js 函数处理 该函数 异步加载页面内容 使用history pushState 更改URL 用户刷新页面 但是服务器上当然不存
  • 有没有等效的 gulp 插件来执行“grunt Bower”?

    With grunt 我可以使用命令grunt bower 由 提供grunt bower requirejs https github com ck86 gulp bower files 自动生成RequireJS我本地的配置文件bowe
  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • 快速 log2(float x) 实现 C++

    我需要在 C 中非常快速地实现 log2 float x 函数 我发现了一个非常有趣的实现 而且速度非常快 include
  • Antd 选择搜索框未呈现匹配项

    我有产品数据 我正在使用搜索值过滤数据 然后使用过滤后的数据呈现选项 产品数据作为道具来自全局 redux 存储 由于某种原因 下拉列表仅在搜索值为空时显示数据 当我开始输入时 filteredData已更新 组件也重新渲染 但选项不显示任
  • 如何像在浏览器中一样检索准确的 HTML

    我正在使用 Python 脚本来呈现网页并检索其 HTML 它适用于大多数页面 但对于其中一些页面 检索到的 HTML 不完整 我不太明白为什么 这是我用来废弃此页面的脚本 由于某种原因 每个产品的链接不在 HTML 中 Link http
  • 使用 Perl 计算字符串中的连续字符数

    我有一个包含多个连续字符序列的字符串 例如 aaabbcccdddd 我想将其表示为 a3b2c3d4 到目前为止 我已经想出了这个 usr bin perl str aaabbcccdddd str s 1 1 g print str n
  • 将罗马数字转换为阿拉伯数字--recursiv

    我是 JavaScript 新手 正在网站的帮助下学习https www jshero net koans roman1 html https www jshero net koans roman1 html 本练习是编写一个转换器 将罗马
  • jQuery clone() 复制数据...有时...?

    使用下面的示例 我有一个tr我正在复制 它包含一个 jQueryautocomplete 第一次克隆时 自动完成功能不起作用 因为附加的data items 一片空白 第二次单击 添加 按钮时 自动完成功能将起作用 此后 再次单击 添加 会
  • JQuery 屏蔽输入插件不起作用

    我已将 JQuery Masked 输入插件添加到我的 Web 项目中 但它根本不起作用 该插件可以在这里找到 http digitalbush com projects masked input plugin http digitalbu
  • FB.getLoginStatus() 不起作用

    我正在尝试编写一段代码来检查用户是否登录 发现FBJS API中有一个内置方法 叫做getLoginStatus 我已经在html中实现了它 但出于某种原因 getLoginStatus 内部的alert 不会被触发 我也尝试在 init
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • TinyMCE:将 CSS 类属性与 formatselect-dropdown 格式结合使用

    我想定制格式 http wiki moxiecode com index php TinyMCE Configuration theme advanced blockformats在 TinyMCE 中格式选择下拉菜单 http wiki
  • IE 中带有“删除”方法的 jQuery.ajax 问题

    我有一个页面 用户可以使用按钮编辑各种内容并选择触发 ajax 调用 特别是 一个操作会导致远程调用一个 url 其中包含一些数据和 放置 请求 这 因为我使用的是宁静的 Rails 后端 会触发我的更新操作 我还有一个删除按钮 它调用相同
  • bool() 和operator.truth() 有什么区别?

    bool https docs python org 3 library functions html bool and operator truth https docs python org 3 library operator htm

随机推荐