写点什么

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:251281
用户头像

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

关注

评论

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

海外直播源码技术文字聊天功能的配置

山东布谷科技

软件开发、 区块链二维码溯源系统开发 源码搭建 直播源码 海外直播源码

全球LED租赁屏市场

Dylan

LED 市场 规模化 全球 技术指南

文件管理开发指南全新登场,快来了解如何访问各类文件

HarmonyOS开发者

HarmonyOS

华秋干货铺 | HDMI接口需注意的PCB可制造性设计问题

华秋电子

【TiDB Future App Hackathon 2023 】TiDB 首届全球黑客马拉松,开发者的狂欢夏日盛会!快来一起 Coding 吧!

TiDB 社区干货传送门

深度解析Java程序员从入行到被裁全过程

Java全栈架构师

程序人生 后端 架构师 java程序员 java面试

第十一届“创业江苏”科技创业大赛正式启动

科兴未来News

企业级低代码平台:企业IT部门的得力助手

优秀

低代码 快速开发 企业级低代码

v7.1 LTS Resource Control 试用

TiDB 社区干货传送门

新版本/特性解读 7.x 实践

FreeRTOS使用 — 合理使用内存 “ 任务中创建任务 ”

矜辰所致

内存管理 FreeRTOS 任务创建 6 月 优质更文活动

图数据库在通信行业有哪些应用?

悦数图数据库

为什么 Serverless 能提升资源利用率?

阿里巴巴云原生

阿里云 Serverless 云原生

软件测试/测试开发丨Allure2报告中添加附件-日志

测试人

程序员 软件测试 测试开发 Allure

瓴羊Quick BI新增多项可视化分析的模块,为数据驱动决策带来更多可能

流量猫猫头

tidb变更大小写敏感问题的总结

TiDB 社区干货传送门

集群管理 故障排查/诊断

FinClip | 来看看5月的成绩单吧

FinClip

科兴未来|第四届中国·盐城创新创业大赛

科兴未来News

# 文盘Rust -- tokio绑定cpu实践

TiDB 社区干货传送门

开发语言

见“芯”知著,浅析北斗芯片关键技术

江湖老铁

MobPush 消息重弹

MobTech袤博科技

5分钟了解Kubernetes Ingress和Gateway API

俞凡

架构 云原生 网络

活动预告|6月15 日 Apache Paimon Meetup,深入解读 Apache Paimon 0.4.0 !

Apache Flink

大数据 flink 社区活动

【架构设计】【问题分析】记一次调用内部es服务超时问题

如果晴天

架构设计 问题定位 问题分析 日志平台 失败策略

SAP ABAP SM50 事务码的另类用途 - ABAP工作进程对数据库表读取操作的检测

汪子熙

SAP abap Netweaver 思爱普 6 月 优质更文活动

Testng和Junit5多线程并发测试对比

javalover123

Java 单元测试 JUnit testNG junit5

对线面试官-为什么要使用MQ

派大星

Java 面试题

软件测试/测试开发丨Allure2报告中添加附件-html、视频

测试人

程序员 软件测试 自动化测试 测试开发 Allure

想给业务松松绑,又怕数据泄漏隐患? 动态脱敏了解一下!

极盾科技

数据安全

定时任务原理方案综述 | 京东云技术团队

京东科技开发者

定时任务 线程 中间件 分布式定时任务 企业号 6 月 PK 榜

v7.1.0 Resource Control 功能测试

TiDB 社区干货传送门

新版本/特性解读 7.x 实践

专访泛境科技:如何借助3DCAT实时云渲染打造元宇宙解决方案

3DCAT实时渲染

元宇宙 元宇宙解决方案 元宇宙实时云渲染

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