哪个更快,XPath还是Regexp?

use*_*105 9 javascript regex performance xpath firefox-addon

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

现在,在这一点上,我没有搜索创建document对象的方法,并将ajax请求内容放入其中,然后使用xPath查找我需要的内容.
相反,我正在加载内容并将其解析为具有常规表达的文本.

但我有一个问题.哪个更好用,xPath或正则表达式?哪个更快?

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

我希望我的附加组件尽可能快地工作,我不知道regexp或xPath背后的机制,所以我不知道哪个更有效.

希望我很清楚.谢谢

Abe*_*bel 17

无论何时处理XML,都要使用XPath(或XSLT,XQuery,SAX,DOM或任何其他支持XML的方法来处理数据).永远不要使用正则表达式来完成此任务.

为什么?XML处理是复杂的,处理所有奇怪的事情,外部/解析/未解析的实体,DTD,处理指令,空格处理,折叠,unicode规范化,CDATA部分等使得创建可靠的正则表达式获取数据非常困难.考虑到业界花了几年的时间来学习如何最好地解析XML,应该有足够的理由不尝试自己做.

回答您的问:当谈到速度(这应该不是在这里你最关心的),它在很大程度上取决于无论是XPath或正则表达式编译器/处理器的实现.有时,XPath会更快(例如,在使用密钥时,如果可能,或编译XSLT),其他时候,正则表达式将更快(如果您可以使用预编译的正则表达式,并且您的查询很容易).但是,HTML/XML的正则表达式绝非易事,因为匹配的嵌套括号(标记)问题,单凭正则表达式无法可靠地解决.

如果输入很大,正则表达式会更快,除非XPath实现可以进行流处理(我认为这不是Firefox中的方法).

你写了:

"哪个更有效"*

能够以最快的速度为您提供可靠稳定的实施方案.使用XPath.如果您需要从浏览器运行代码,那么它也可以在Firefox和其他浏览器中使用.