1 Tree Parsing(也就是DOM-like)
我们需要require rexml/document 库,并且include REXML : require 'rexml/document'
include REXML
input = File.new("books.xml")
doc = Document.new(input)
root = doc.root
puts root.attributes["shelf"] # Recent Acquisitions
doc.elements.each("library/section") { |e| puts e.attributes["name"] }
# Output:
# Ruby
# Space
doc.elements.each("*/section/book") { |e| puts e.attributes["isbn"] }
# Output:
# 0672328844
# 0321445619
# 0684835509
# 074325631X
sec2 = root.elements[2]
author = sec2.elements[1].elements["author"].text # Robert Zubrin 这里要注意的是xml中的属性和值被表示为一个hash,因此我们能够通过attributes[]来提取我们需要的值,元素的值还能通过类似于 path的字符串或者整数来取得.其中用整数取的话,是1-based而不是0-based.
2 Stream Parsing(也就是SAX-like Parsing)
这边使用了一个小技巧,那就是定义了一个listener 类,它将会在parse的时候被回调: require 'rexml/document'
require 'rexml/streamlistener'
include REXML
class MyListener
include REXML::StreamListener
def tag_start(*args)
puts "tag_start: #{args.map {|x| x.inspect}.join(', ')}"
end
def text(data)
return if data =http://blog.soso.com/qz.q/~ /^/w*$/ # whitespace only
abbrev = data[0..40] + (data.length > 40 ? "..." : "")
puts " text : #{abbrev.inspect}"
end
end
list = MyListener.new
source = File.new "books.xml"
Document.parse_stream(source, list)
分享到:
相关推荐
Ruby 使用 REXML 解析处理 XML REXML 是一个 Ruby 库,用于解析和处理 XML 文档。下面是使用 REXML 解析处理 XML 的一些知识点: 1. 基本使用:使用 REXML 解析 XML 文档,需要首先将 XML 字符串转换为 Document ...
以下是一个使用REXML解析XML文档的实例。假设我们有一个名为`books.xml`的文件,内容如题目所示,包含一个图书馆的书籍列表: ```ruby ... ``` 首先,我们需要引入REXML库并创建一个XML文档对象: ```ruby ...
### Ruby使用REXML库解析XML格式数据的方法及安全注意事项 #### 概述 本文主要介绍如何使用Ruby语言中的REXML库来解析XML格式的数据。REXML是一个完全由Ruby编写的库,提供了强大的XML处理能力。它支持两种主要的...
1. **XML 解析**:使用 REXML 解析 XML 文件,将其转换为可操作的对象结构。 2. **对象绑定**:将 XML 节点映射到 Ruby 类,每个节点对应一个实例,属性对应节点的子元素。 3. **动态类生成**:根据 XML 结构在运行...
实际上, REXML 支持两种不同样式的 XML 处理 ― “树”和“流”。 第一种样式是 DOM 所尝试要做的更简单的版本;第二种样式是 SAX 所尝试要做的更简单的版本。 让我们先研究树样式。假设我们要提取上一个示例中的...
Nokogiri允许我们快速创建和解析XML文档,同时提供了XPath和CSS选择器来查找文档中的特定元素。例如,我们可以这样加载一个XML文件: ```ruby require 'nokogiri' xml_file = File.open('example.xml') doc =...
SAX(Simple API for XML)解析器是基于事件的,它在解析XML文档时逐个读取XML文件的各个元素,并触发事件处理程序。而DOM(文档对象模型)解析器则将整个XML文档加载到内存中,并构建成一个树形结构,这样可以更...
- 解析XML:使用`Nokogiri::XML`方法打开一个XML文件,然后可以通过`search`或`at`方法使用XPath或CSS查询文档。 - 修改XML:可以创建新的元素,使用`add_child`方法添加到树中,或者用`content=`设置元素内容。 ...
在描述中提到的博文链接(由于实际无法访问,这里我们假设它提供了一些关于Ruby处理XML的实际示例或技巧),可能涵盖的内容包括如何使用Ruby解析XML文件,查找特定节点,修改XML结构,或者创建新的XML文档。...
萨克斯 Saxerator是一种流式XML到哈希的解析器,旨在通过为您提供对文档的可...(默认)使用ruby的内置REXML解析器-无需其他依赖项 gem install nokogiri gem install ox 如果未使用默认值,请在指定适配器 DSL DS
总的来说,Ruby的`Builder`库和`ReXML`库提供了强大的XML处理能力,无论是在创建还是解析XML文件时,都能满足各种需求。了解和熟练掌握这两个库,对于任何处理XML的Ruby开发者来说都是至关重要的。
紫菜 真正简单的XML解析来自于Crack,而后者则来自于Merb。 创建Nori是为了绕过... 解析XML时,请确保Nokogiri在您的LOAD_PATH中,因为Nori会尝试加载它在需要的时候。 类型转换 除了常规的类型转换外,Nori还具有一