开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

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

关注

评论

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

Spider实战系列-一次真实接单经历让我抓取了某东的数据

浅辄

爬虫 三周年连更

Unity 报错之 接入YomboTGSDK后打包报错:mainTemplate.gradle needs to be updated(property ‘unityStreamingAssets‘)

陈言必行

Unity 三周年连更

为什么说Flutter无法成为移动应用开发的“顶流明星”?

FinFish

flutter 前端框架 跨端框架

Socket学习网络基础

芯动大师

android TCP通信 三周年连更

一文读懂线程池的实现原理

老周聊架构

三周年连更

Vue3 如何编写一个插件

程序员海军

Vue3 三周年连更

一文掌握使用 Go 标准库 sort 对切片进行排序

陈明勇

Go golang 排序 三周年连更 sort

《致“抄我”的朋友:你已经被我列入白名单!》

程序员晚枫

开源

HTTP方法大全

阿泽🧸

HTTP 三周年连更

使用 Amazon Step Functions 和 Amazon Athena 实现简易大数据编排

亚马逊云科技 (Amazon Web Services)

OpenHarmony/HarmonyOS应用上下文Context

坚果

OpenHarmony OpenHarmony3.2 三周年连更

全栈开发实战|SSM框架整合开发

TiAmo

ssm mybits 全栈开发 三周年连更

前端三板斧头 --- 编程范式

知心宝贝

JavaScript 学习 编程 前端 三周年连更

华为云等保解决方案为您提供最专业的团队,助您轻松过等保

IT科技苏辞

去年我是怎么解决团队问题的

光毅

团队管理 领导力

跨平台应用开发进阶(四十九)由环境切换引发的页面通讯机制思考

No Silver Bullet

跨平台应用开发 三周年连更 页面通讯机制

STM32F103RCT6驱动SG90舵机-完成正反转角度控制

DS小龙哥

三周年连更

Paimon 专题上线|从 0 到 1 入门新一代流式数据湖存储

Apache Flink

大数据 flink 实时计算

Go语言并发编程的核心 —— GMP调度模型

Jack

挑战 30 天学完 Python:Day8 数据类型 - 字典 dict

MegaQi

Python 挑战30天学完Python 三周年连更

超级App与新零售:零售品牌如何利用小程序技术掌握未来商业机会?

FinFish

新零售 超级app 小程序技术 小程序容器技术

uniapp自定义富文本编辑器

格斗家不爱在外太空沉思

uni-app 三周年连更

Linux命令之find的高级用法

小毛驴的烂笔头

Linux find

AI日课@20230417:AI之于教育;ChatGPT Sidebar:一个浏览网页时的强力AI助手

无人之路

人工智能 ChatGPT

华为云等保合规方案,守护企业网络安全线

IT科技苏辞

美光遭遇审查,存储市场成了“香饽饽”?

脑极体

美光

简单高效的Shell数组操作技巧与技术

小毛驴的烂笔头

linux命令 linux数组

NDP常用报文格式

穿过生命散发芬芳

NDP 三周年连更

编程技术为王的天下终究要散了吗| 社区征文

卢卡多多

三周年征文

《设计模式之禅》Strategy_Pattern--策略模式

浅辄

设计模式 Java、 三周年连更

打包python程序 | python小知识

AIWeker

Python python小知识 三周年连更

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