写点什么

Ruby XML 综述:Hpricot 0.7、稳定的 Libxml-ruby 及 Nokogiri

  • 2009-03-27
  • 本文字数:799 字

    阅读完需:约 3 分钟

最近由于Nokogiri、Hpricotlibxml-ruby之间的竞争致使 Ruby 的XML支持得到了极大的改进。Nokogiri 发布于去年秋天,它基于本地的 libxml2 和 libxslt

由于 Nokogiri 使用了 libxml2,因此使用者可以获得如下好处:快速解析、i18n 支持、快速搜索、基于标准的 XPath 支持、命名空间支持及成熟的 HTML 修正算法。

Nokogiri 还具有诸如使用 XPath 和 CSS 选择符进行搜索的特性,同时它还支持 Ruby 1.9.1

一些基准的结果表明 Nokogiri 的性能是最棒的,之后 Hpricot 的维护者就花费了大量心力对该库进行改进并发布了 Hpricot 0.7

来享受这个新的、卓越的 Hpricot 吧。它快一些、支持 Ruby 1.9 而且还进行了不少修复… 我敢肯定你想知道为何面对 Nokogiri 和 LibXML 的强大竞争我还要更新 Hpricot 呢。记住 Hpricot 不依赖于其他任何东西,同时它比这两个库都要小。Hpricot 使用的是自己的基于 Ragel 的解析器,这样你就可以随意修改解析器了,相对来说其代码也更精简。

最重要的是过去 Hpricot 曾运行在 JRuby 上。现在我正忙于将 IronRuby 和 0.7 版的一些代码合并到 JRuby 上。这意味着无需调整你的代码就能运行在多种 Ruby 平台上,因此我这么做值了,你觉得呢?

最后 libxml-ruby 也发布了 1.0 版

* 支持 Ruby 1.9.1
* 对 OS X 10.5 和 MacPorts 开箱即用的支持
* 优雅、干净的 API 可以轻松完成一些简单的事情,同时还提供了你所需要的 libxml2 的所有功能

通过一个个的检查,最后我终于发现了一个隐蔽的问题: ```

int dictNames : Use dictionary names for the tree

复制代码
该设置控制的是 libxml2 是否使用 dictionary 来缓存之前解析过的字符串。字符串的缓存与否会对性能造成极大的影响,因此默认情况下缓存应该是开启的。目前 libxml-ruby 1.2.3+ 采取的都是这种方式。

借助于这个改变,现在 libxml-ruby 的性能与 Nokogiri 已不相上下。

查看英文原文: Ruby XML Roundup: Hpricot 0.7, Stable Libxml-ruby and Nokogiri

2009-03-27 11:251249
用户头像

发布了 88 篇内容, 共 268.9 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

基于有限状态机与消息队列的三方支付系统补单实践

Java架构师迁哥

Windows下MySQL无法启动万能解决方案

MySQL从删库到跑路

MySQL

S型曲线不止关乎身材?|技术人应知的创新思维模型(2)

Alan

创新 思维模型

面试被问线程安全怎么保障,我的回答让面试官眼前一亮

996小迁

Java 架构 面试 多线程

Redis 子进程开销监控和优化方式

李尚智

Redis开发与运维

「生产事故」MongoDB复合索引引发的灾难

Kerwin

数据库 mongodb

报销发票抵扣工资的CTO,该不该? | 法庭上的CTO(5)

赵新龙

CTO 法庭上的CTO

告别“效率内卷化”,华为用一年时间让职场人支棱起来

脑极体

数字经济跨越五个融合发展阶段,区块链正成为基础支撑结构

CECBC

数字经济

Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线

newbe36524

.net core ASP.NET Core dotnet

拆解增长黑客之实战(二):留存与变现

懒杨杨

读书 增长 产品运营

第六周-学习总结

Mr_No爱学习

Spock单元测试框架实战指南四 - 异常测试

Java老k

Java 单元测试 spock

警察营救安徽望江县17岁女生跳河自尽过程中,现场看热闹的旁观者们在做什么?

wbliu85

排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时

蚂蚁集团移动开发平台 mPaaS

小程序 问题排查 mPaaS

第六周-作业1

Mr_No爱学习

生产环境压测建设历程之三 淘宝网2009年的痛

数列科技杨德华

第十一周作业

solike

云原生架构:容器资源限制及资源可见性

云原生实验室

云原生

百篇已过,又是一个新篇章,谈谈感受吧

良知犹存

代码人生

Bitmap为什么那么快?

Man

redis 中间件

算法训练营课程纲要

陈皓07

2. Spring早期类型转换,基于PropertyEditor实现

YourBatman

Spring Framework 类型转换 PropertyEditor

国家计算机网络与信息安全管理中心官员:数字货币的风险仍需关注

CECBC

信息安全

谷燕西:不需要银行的银行业务

CECBC

移动互联网

《Python深度学习》第二版重磅来袭——(Keras之父亲自编写)

计算机与AI

甲方日常 64

句子

工作 随笔杂谈 日常

读写分离这个坑,你应该踩过吧?

楼下小黑哥

MySQL 主从同步 读写分离

话题讨论 | 作为地地道道的程序员半年内都没摸过代码是什么样的体验?

xcbeyond

话题讨论

Redis 持久化方式-RDB

李尚智

redis redis持久化

架构词典:语言

lidaobing

架构 语言

Ruby XML综述:Hpricot 0.7、稳定的Libxml-ruby及Nokogiri_Ruby_Werner Schuster_InfoQ精选文章