Ruby中使用Nokogiri包来操作XML格式数据的教程
作者:归人云淡风轻
时间:2026-06-28
浏览:0
先说安装,这是入门的第一步。以Ubuntu为例,得先装好libxml2和libxslt,这是基础环境: $ apt-get install libxml2 libxslt 装完这两个之后,就顺畅了: $ gem install nokogiri 搞定。 可选项 Nokogiri还提供了一些解析时的可
先说安装,这是入门的第一步。以Ubuntu为例,得先装好libxml2和libxslt,这是基础环境:
$ apt-get install libxml2 libxslt
装完这两个之后,就顺畅了:
$ gem install nokogiri
搞定。
可选项
Nokogiri还提供了一些解析时的可选项,常用的有这几个:
- NOBLANKS —— 删除空节点,让数据更清爽
- NOENT —— 替代实体,比如把&替换成&
- NOERROR —— 隐藏错误报告,减少干扰
- STRICT —— 精确解析,遇到格式异常直接报错,适合严谨场景
- NONET —— 解析期间禁止任何网络连接,安全第一
具体怎么用?看两个例子就明白了。第一种方式,通过块调用来配置:
doc = Nokogiri::XML(File.open("blossom.xml")) do |config|
config.strict.nonet
end
或者,更直接一点,用位运算组合选项:
doc = Nokogiri::XML(File.open("blossom.xml")) do |config|
config.options = Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NONET
end
解析
解析这件事,Nokogiri靠两个核心方法搞定:Nokogiri::HTML 和 Nokogiri::XML。数据来源可以是字符串、文件、或者URL,灵活得很。
读取字符串:
html_doc = Nokogiri::HTML("Mr. Belvedere Fan Club
")
xml_doc = Nokogiri::XML("Alf ")
读取文件:
f = File.open("blossom.xml")
doc = Nokogiri::XML(f)
f.close
读取URL:
require 'open-uri'
doc = Nokogiri::HTML(open("http://www.threescompany.com/"))
是不是很简单?
寻找节点
节点搜索有两种主流方式:XPath 和 CSS选择器。假设我们有这样一个XML:
Stars Moon
用XPath:
@doc.xpath("//title")
用CSS:
@doc.css("book title")
两种方式都能精准定位节点,选你顺手的那套就行。
修改节点内容
查找节点当然是为了修改内容,看这个:
title = @doc.css("book title").first
title.content = 'new title'
puts @doc.to_html
# =>
...
new title
...
直接把 content 赋值,简单粗暴。
修改节点的结构
节点的移动和重组,才是Nokogiri真正展示功力的时候:
first_title = @doc.at_css('title')
second_book = @doc.css('book').last
# 把第一个title放到第二个book中
first_title.parent = second_book
# 也可以随意摆放
second_book.add_next_sibling(first_title)
# 修改标签名称和属性
first_title.name = 'h2'
first_title['class']='red_color'
puts @doc.to_html
# => ...
# 还可以新建一个节点
third_book = Nokogiri::XML::Node.new 'book', @doc
third_book.content = 'I am the third book'
second_book.add_next_sibling third_book
puts @doc.to_html
# =>
...
...
I am the third book
从移动节点、修改标签,到新建节点、插入到指定位置,Nokogiri让XML的结构操作变得相当灵活。
作者最新文章
荣耀MagicOS 11发布计划与Agent Harness架构解析
2026-09-08 19:23
AI重构企业业务架构:超聚变“智企”范式核心解析
2026-09-08 18:39
PDF合并工具怎么选?在线合并5步实操指南
2026-09-04 17:05
PDF图片压缩工具推荐与批量处理实操指南
2026-09-03 12:14
照片如何转成PDF格式?三种图片转PDF操作方法
2026-09-03 11:04
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































