下面是关于“Ruby的XML格式数据解析库Nokogiri的使用进阶”的详细说明:
Nokogiri 是什么?
Nokogiri 是一个 Ruby 实现的 XML 和 HTML 解析库,它使用非常流行的 libxml2 库作为解析器。它可以跨平台地运行(Windows、Mac 和 Linux),在现实开发中非常实用。
安装 Nokogiri
安装 Nokogiri 前,需要先安装 libxml2 和 libxslt 库,对于 Debian 或者 Ubuntu 用户,可以通过以下命令进行安装:
sudo apt-get install libxml2-dev libxslt-dev
其他 Linux 发行版或 Mac 用户可以通过手动编译进行安装。
安装完成以上依赖后,只需执行以下命令即可安装 Nokogiri:
gem install nokogiri
Nokogiri 常用方法
解析 XML 或 HTML
在 Ruby 中,使用 Nokogiri 来解析 XML 或 HTML 可以使用以下代码:
require 'nokogiri'
doc = Nokogiri::XML(File.read('hello.xml'))
这里通过 File.read
来读取并解析 XML 文件 hello.xml
,解析后的文档内容存储在 doc
中。
查找节点
查找节点可以使用 XPath 或 CSS 选择器两种方式,例如使用 XPath 进行查找:
doc.xpath('//book')
这里的 //book
表示查找所有的 book 节点。如果使用 CSS 选择器进行查找:
doc.css('book')
这里的 book
表示查找所有的 book 节点。不同的是,CSS 选择器可以比 XPath 更加灵活,例如可以使用 .class
来查找某个 class,使用 #id
来查找某个 id。
获取节点值
获取节点的值非常简单,可以使用 content
或 text
来获取,例如:
nodeset = doc.xpath('//book')
nodeset[0].content
nodeset[0].text
这两行代码将会输出第一个 book 节点的内容。
示例 1:解析 XML 文件
我们来看一个实际的例子,假设我们有以下的 XML 文档:
<books>
<book id="1">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<price>29.99</price>
</book>
<book id="2">
<title>Programming Ruby</title>
<author>Dave Thomas</author>
<price>49.95</price>
</book>
</books>
我们可以使用 Nokogiri 来解析该 XML 文档,代码如下:
require 'nokogiri'
doc = Nokogiri::XML(File.read('books.xml'))
doc.xpath('//book').each do |book|
puts "ID: #{book.attr('id')}"
puts "Title: #{book.xpath('title').text}"
puts "Author: #{book.xpath('author').text}"
puts "Price: #{book.xpath('price').text}"
puts
end
输出结果如下:
ID: 1
Title: Learning XML
Author: Erik T. Ray
Price: 29.99
ID: 2
Title: Programming Ruby
Author: Dave Thomas
Price: 49.95
这里我们使用了 each
函数遍历了所有的 book 节点,使用了 attr
来获取节点的属性值,使用 text
来获取节点的文本内容。
示例 2:解析 HTML 网页
我们可以使用 Nokogiri 解析 HTML 页面,例如:
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('https://www.baidu.com'))
# 查找所有的链接
doc.css('a').each do |link|
puts link.content
puts link.attr('href')
puts
end
这段代码很好理解,使用 open-uri
来打开 URL https://www.baidu.com
,然后查找所有的链接,并输出链接的文本内容和 href 属性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ruby的XML格式数据解析库Nokogiri的使用进阶 - Python技术站