写点什么

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

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

关注

评论

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

GraphicConverter 12:Mac平台图像处理的全能选手

Rose

经典音频效果器合集:FabFilter Total Bundle 2019 mac破解版

Rose

牛牛剧场APP:小程序短剧投资引领创业新潮流

新消费日报

数据迁移丨借助 pg2mysql 从 PostgreSQL 到 GreatSQL

GreatSQL

课程实录 | Ingress Controller 与 Master 的通讯机制

NGINX开源社区

Kubernetes k8s 学习资料 NGINX Ingress Controller kubernetes 运维

新客户 | 时序数据库TDengine 携手新疆油田,让油气生产更高效

TDengine

tdengine 时序数据库

Svelte 最新中文文档翻译(3)—— 符文(Runes)上

冴羽

vue.js 前端 React Svelte SvelteKit

文档图像矫正任务的前沿进展:引入Transformer框架、极坐标的思路

合合技术团队

图像识别 系统图像畸变、校准和矫正 #人工智能 #算法 文档解析

微帧科技携手行业精英,共编《移动场景扩展现实超高清技术白皮书》

微帧Visionular

区块链智能合约的安全性

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

如何迅速并识别处理MDL锁阻塞问题

华为云开发者联盟

MySQL 华为云 GaussDB mdl TaurusDB

智慧菜场系统(源码+文档+部署+讲解)

深圳亥时科技

如何测量stp/step/prt等三维图纸?

在路上

cad cad看图 三维看图

VNC Server for Mac:高效便捷的远程桌面管理解决方案

Rose

如何区分AI智能体、自动化工作流和PRA?

测试人

软件测试

Navicat Premium 16 全面的数据库管理软件 中文版安装包-Mac/win

Rose

数字水印系统(源码+文档+部署+讲解)

深圳亥时科技

AI赋能职场:提升效率还是加剧竞争?

天津汇柏科技有限公司

AI 人工智能

2025-01-22:使二进制数组全部等于 1 的最少操作次数Ⅱ。用go语言,给定一个二进制数组 nums,你可以对数组进行以下操作任意次(包括0次): 选择任何一个下标 i,并将从该下标开始到数组末

福大大架构师每日一题

福大大架构师每日一题

Bartender 5 for mac(菜单栏图标管理软件)v5.2.7中/英激活版

Rose

AI口语练习的场景模拟

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

碳课堂|氢能--双碳目标下的未来能源之星

AMT企源

碳中和 新能源 碳管理 氢能

写代码的时候应该靠感觉还是靠理性

rubys_

时序数据库 TDengine 与上海电气工业互联网平台完成兼容性认证

TDengine

tdengine 时序数据库

京东 API 接口调用失败的常见原因及解决方法

科普小能手

数据挖掘 数据分析 电商 京东 API 接口

EloqKV作为高性能缓存数据库的优势

晨章数据

数据库 分布式 dragonfly NoSQL 数据库

Svelte 最新中文文档翻译(4)—— 符文(Runes)下

冴羽

Vue 前端 React Svelte SvelteKit

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