加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

什么是Ruby的快速XML解析器?

发布时间:2020-12-16 21:20:35 所属栏目:百科 来源:网络整理
导读:我正在使用Nokogiri,它适用于小型文档.但对于180KB的 HTML文件,我必须通过ulimit -s增加进程堆栈大小,并且解析和XPath查询需要很长时间. 使用库存Ruby发行版有更快的方法吗? 我习惯了XPath,但解决方案不一定需要支持XPath. 标准是: 快速写. 快速执行. 强大
我正在使用Nokogiri,它适用于小型文档.但对于180KB的 HTML文件,我必须通过ulimit -s增加进程堆栈大小,并且解析和XPath查询需要很长时间.

使用库存Ruby发行版有更快的方法吗?

我习惯了XPath,但解决方案不一定需要支持XPath.

标准是:

>快速写.
>快速执行.
>强大的结果解析器.

解决方法

Nokogiri基于libxml2,它是任何语言中最快的XML / HTML解析器之一.它是用C语言编写的,但是在许多语言中都有绑定.

问题是文件越复杂,在内存中构建完整的DOM结构所需的时间就越长.与其他解析方法相比,创建DOM更慢且占用内存更多(通常整个DOM必须适合内存). XPath依赖于这个DOM.

SAX通常是人们为速度或不适合内存的大型文档而转向的.它更多的是事件驱动:它通知你一个start元素,end元素等,你编写处理程序来对它们作出反应.这有点痛苦,因为你最终会自己跟踪状态(比如你在哪个元素里面).

有一个中间立场:一些解析器具有“拉解析”功能,您可以在其中进行类似光标的导航.您仍然按顺序访问每个节点,但是您可以“快进”到您不感兴趣的元素的末尾.它具有SAX的速度,但是用于许多用途的更好的界面.我不知道Nokogiri是否可以为HTML做这个,但如果你有兴趣我会调查它的Reader API.

请注意,Nokogiri对格式错误的标记(例如真实HTML)也非常宽容,仅此一点就使它成为HTML解析的一个非常好的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读