我正在为 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(使用前将#替换为@)