0

0

Ruby怎么解析XML REXML库使用教程

月夜之吻

月夜之吻

发布时间:2025-12-31 08:37:03

|

968人浏览过

|

来源于php中文网

原创

REXML 是 Ruby 标准库内置的轻量 XML 解析方案,支持字符串/文件解析、XPath 查询、树遍历、动态生成与格式化输出,适用于中小型任务,需注意命名空间、空白处理、大文件及编码问题。

ruby怎么解析xml rexml库使用教程

Ruby 解析 XML 最常用、标准库自带的方案就是 REXML。它轻量、无需额外安装,适合中小型 XML 处理任务(如读取配置、解析 API 响应、生成简单 XML 报文等)。下面用清晰、实用的方式讲清楚怎么用。

加载和基础解析:从字符串或文件开始

REXML 默认已包含在 Ruby 标准库中,直接 require 即可。解析入口通常是 REXML::Document

  • 字符串解析
    require 'rexml/document'
    doc = REXML::Document.new("Hello")
  • 从文件解析:
    doc = REXML::Document.new(File.read("data.xml"))(注意编码,如有中文建议加 File.read("data.xml", encoding: "UTF-8")

提取元素内容:用 XPath 或遍历方式

获取节点最直观的是 XPath —— 简洁且表达力强:

  • 找所有 的文本:
    doc.elements.each("//item") { |e| puts e.text }
  • 按属性筛选(比如 id=1):
    doc.elements.each("//item[@id='1']") { |e| puts e.text }
  • 获取某个节点的属性值:
    e.attributes["id"]e 是一个 REXML::Element

也可用树形遍历(适合逻辑较复杂、需逐层判断的场景):

doc.root.each_element do |child|
puts "#{child.name}: #{child.text}"
end

Contentfries
Contentfries

将长视频改造成更加引人注目的短视频

下载

修改和生成 XML:构建新文档或更新现有结构

REXML 支持动态创建和修改:

  • 新建文档并添加元素:
    doc = REXML::Document.new
    root = doc.add_element("response")
    root.add_element("status").text = "success"
    root.add_element("count").text = "42"
  • 向已有元素追加子节点:
    item = doc.root.add_element("item")
    item.add_attribute("type", "urgent")
    item.text = "Fix bug now"
  • 输出格式化 XML(带缩进):
    require 'rexml/formatters'
    formatter = REXML::Formatters::Pretty.new(2)
    formatter.write(doc, $stdout)

常见坑与注意事项

实际用时容易踩几个小坑:

  • 默认不处理命名空间(namespace),若 XML 含 xmlns,需显式声明并使用前缀,例如:
    doc = REXML::Document.new(xml)
    doc.namespaces["ns"] = "http://example.com/ns"
    doc.elements["//ns:item"]
  • 文本节点可能含空白换行(尤其格式化 XML),用 e.text.strip 更安全
  • 大文件慎用 DOM 方式(全部载入内存),可改用 REXML::Parsers::BaseParser 或考虑 Nokogiri(更高效,但需 gem install)
  • 中文乱码?确保源 XML 声明编码一致(如 ),Ruby 读取时也指定 encoding

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.11.20

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

456

2023.11.27

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1851

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2080

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

919

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

248

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

205

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1435

2023.10.24

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Rust 教程
Rust 教程

共28课时 | 3.9万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号