`
jn615
  • 浏览: 101225 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

使用REXML解析xml

阅读更多

 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.pdf

    Ruby 使用 REXML 解析处理 XML REXML 是一个 Ruby 库,用于解析和处理 XML 文档。下面是使用 REXML 解析处理 XML 的一些知识点: 1. 基本使用:使用 REXML 解析 XML 文档,需要首先将 XML 字符串转换为 Document ...

    实例解析Ruby程序中调用REXML来解析XML格式数据的用法

    以下是一个使用REXML解析XML文档的实例。假设我们有一个名为`books.xml`的文件,内容如题目所示,包含一个图书馆的书籍列表: ```ruby ... ``` 首先,我们需要引入REXML库并创建一个XML文档对象: ```ruby ...

    Ruby使用REXML库来解析xml格式数据的方法

    ### Ruby使用REXML库解析XML格式数据的方法及安全注意事项 #### 概述 本文主要介绍如何使用Ruby语言中的REXML库来解析XML格式的数据。REXML是一个完全由Ruby编写的库,提供了强大的XML处理能力。它支持两种主要的...

    Ruby XML Controller-开源

    1. **XML 解析**:使用 REXML 解析 XML 文件,将其转换为可操作的对象结构。 2. **对象绑定**:将 XML 节点映射到 Ruby 类,每个节点对应一个实例,属性对应节点的子元素。 3. **动态类生成**:根据 XML 结构在运行...

    Ruby中XML格式数据处理库REXML的使用方法指南

    实际上, REXML 支持两种不同样式的 XML 处理 ― “树”和“流”。 第一种样式是 DOM 所尝试要做的更简单的版本;第二种样式是 SAX 所尝试要做的更简单的版本。 让我们先研究树样式。假设我们要提取上一个示例中的...

    ruby xml封装好的操作XML对象

    Nokogiri允许我们快速创建和解析XML文档,同时提供了XPath和CSS选择器来查找文档中的特定元素。例如,我们可以这样加载一个XML文件: ```ruby require 'nokogiri' xml_file = File.open('example.xml') doc =...

    在Ruby中处理XML和XSLT以及XPath的简单教程

    SAX(Simple API for XML)解析器是基于事件的,它在解析XML文档时逐个读取XML文件的各个元素,并触发事件处理程序。而DOM(文档对象模型)解析器则将整个XML文档加载到内存中,并构建成一个树形结构,这样可以更...

    ruby操作xml

    - 解析XML:使用`Nokogiri::XML`方法打开一个XML文件,然后可以通过`search`或`at`方法使用XPath或CSS查询文档。 - 修改XML:可以创建新的元素,使用`add_child`方法添加到树中,或者用`content=`设置元素内容。 ...

    ruby,xml

    在描述中提到的博文链接(由于实际无法访问,这里我们假设它提供了一些关于Ruby处理XML的实际示例或技巧),可能涵盖的内容包括如何使用Ruby解析XML文件,查找特定节点,修改XML结构,或者创建新的XML文档。...

    saxerator:基于SAX的XML解析器,用于将大文件解析为可管理的块

    萨克斯 Saxerator是一种流式XML到哈希的解析器,旨在通过为您提供对文档的可...(默认)使用ruby的内置REXML解析器-无需其他依赖项 gem install nokogiri gem install ox 如果未使用默认值,请在指定适配器 DSL DS

    Ruby程序中创建和解析XML文件的方法

    总的来说,Ruby的`Builder`库和`ReXML`库提供了强大的XML处理能力,无论是在创建还是解析XML文件时,都能满足各种需求。了解和熟练掌握这两个库,对于任何处理XML的Ruby开发者来说都是至关重要的。

    nori:XML到哈希转换器

    紫菜 真正简单的XML解析来自于Crack,而后者则来自于Merb。 创建Nori是为了绕过... 解析XML时,请确保Nokogiri在您的LOAD_PATH中,因为Nori会尝试加载它在需要的时候。 类型转换 除了常规的类型转换外,Nori还具有一

Global site tag (gtag.js) - Google Analytics