`
jn615
  • 浏览: 98229 次
  • 性别: 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.pdf

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

    主要介绍了Ruby程序中调用REXML来解析XML格式数据的用法,文中用实例分三个步骤讲解了REXML解析XML的过程,需要的朋友可以参考下

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

    主要介绍了Ruby使用REXML库来解析xml格式数据的方法,文章最后提及了REXML库的使用相关安全问题可以注意一下,需要的朋友可以参考下

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

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

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

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

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

    主要介绍了Ruby程序中创建和解析XML文件的方法,创建用builder库,解析用ReXML库,需要的朋友可以参考下

    nori:XML到哈希转换器

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

    JSXML XML Tools:用于 JavaScript 的 XML 库/工具-开源

    JSXML 包括 REXML,它是一个高性能解析器,它不介意你向它抛出 2000 行(格式良好的)XML,一个具有独特 API 的构建器,它邀请围绕它的 GUI(图形用户界面)进行编码,以及一个迭代器,不需要昂贵的递归。...

    bibtex-ruby:BibTeX库,解析器和Ruby转换器

    如果您着急,还可以轻松导出/转换为YAML,JSON,CiteProc / CSL,XML(BibTeXML,需要rexml )和RDF(实验性)等格式。 有关使用BibTeX-Ruby的项目的列表,请查看 。 快速开始 在IRB会话中安装和加载BibTeX-Ruby:...

    使用Ruby来处理文本的教程

    本文简单介绍了 Ruby 的文本数据处理功能,以及如何使用 Ruby 语言有效处理不同格式的文本数据,无论是 CSV 数据还是 XML 数据。 Ruby 字符串 常用缩略词 CSV:逗号分隔值 REXML:Ruby Electric XML XML:可扩展...

Global site tag (gtag.js) - Google Analytics