Ruby怎么解析XML Nokogiri库使用方法


Nokogiri 是 Ruby 中最常用、最可靠的 XML 和 HTML 解析库,基于 libxml2,支持 XPath 与 CSS 选择器,性能好、兼容性强;需先执行 gem install nokogiri 并 require 'nokogiri',再通过字符串或文件加载解析。

Nokogiri 是 Ruby 中最常用、最可靠的 XML(和 HTML)解析库,用法简洁但功能强大。它底层基于 libxml2,性能好、兼容性强,支持 XPath 和 CSS 选择器,适合处理各种结构化文档。

安装与基础引入

在终端中运行安装命令:

gem install nokogiri

在 Ruby 脚本中引入:

require 'nokogiri'

从字符串或文件加载 XML

解析 XML 字符串:

xml_string =   Alice
XML
doc = Nokogiri::XML(xml_string)

从文件加载:

doc = Nokogiri::XML(File.open('data.xml'))

注意:Nokogiri 默认会报告解析警告。如需静默(忽略格式警告),加选项:

doc = Nokogiri::XML(xml_string) { |config| config.strict.nonet }

用 XPath 或 CSS 选择元素

推荐优先使用 XPath,表达力强;CSS 语法更直观,适合简单场景。

  • 查所有 name 元素:doc.xpath('//name')doc.css('name')
  • id=1 的 user:doc.xpath('//user[@id="1"]')doc.css('user[id="1"]')
  • 获取第一个匹配节点的文本:doc.at_xpath('//name').text"Alice"
  • 获取属性值:doc.at_xpath('//user').attribute('id').value"1"

修改和生成 XML

Nokogiri 支持动态构建和修改文档:

  • 新增子节点:user = doc.at_xpath('//user'); user.add_child('alice@example.com')
  • 修改文本内容:doc.at_xpath('//name').content = 'Bob'
  • 保存为字符串:doc.to_xml(保留缩进加 to_xml(indent: 2)
  • 写入文件:File.write('output.xml', doc.to_xml)

基本上就这些。掌握加载、查询、取值、修改四步,就能覆盖绝大多数 XML 处理需求。Nokogiri 的 API 设计很自然,多试几次 XPath 就上手了。


# css  # html  # ruby  # require  # xml  # 字符串  # 选择器  # 加载  # 最常用  # 最可靠  # 文档  # 第一个  # 就能  # 几次  # 性能好  # 如需 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】  Win10怎么关闭自动更新错误弹窗_Win10策略屏蔽失败提示减少干扰【防护】  Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺方法【步骤】  Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程  php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】  如何使用Golang实现Web表单数据绑定_自动映射字段到结构体  php打包exe怎么传递参数_命令行参数接收方法【解答】  Mac如何使用听写功能_Mac语音输入打字【效率技巧】  php怎么下载安装后无法解析php文件_服务器配置检查【解答】  Win10如何备份驱动程序_Win10驱动备份步骤【攻略】  Win11如何更改用户账户文件夹名称 Win11修改C:Users用户名【终极教程】  Win11怎么用设置清理回收站_Win11设置清理回收站技巧【步骤】  Python多进程教程_multiprocessing模块实战  php增删改查需要哪些扩展_开启mysqli或pdo扩展方法【说明】  如何在同包不同文件中正确引用 Go 结构体  如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)  Windows音频驱动无声音原因解析_声卡驱动错误修复步骤  Python迭代器生成器进阶教程_节省内存与懒加载实战  c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】  ACF 教程:正确更新嵌套在多层 Group 字段内的子字段  Win11声音太小怎么办_Windows 11开启响度均衡增强音量【技巧】  Win11怎么设置闹钟_Windows 11时钟应用闹钟设置指南【详解】  c++怎么使用std::tuple存储多元组数据_c++ 11获取元素与解包操作【技巧】  如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践  如何高效识别并拦截拼接式恶意域名 spam  如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践  Python网络超时处理_健壮性设计说明【指导】  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  Win11怎么设置默认邮件应用_Windows11应用关联Mail设置  Win11怎么更改系统语言_Win11中文语言包下载与安装【指南】  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何使用正则表达式精确匹配最多含一个换行符的 start-end 区段  Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项  Mac怎么安装软件_Mac安装dmg与pkg文件的区别【指南】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Windows10如何更改系统字体大小_Win10辅助功能文本缩放设置  如何在 PHP 中按相同键合并两个关联数组为二维数组  如何在 Go 中判断变量是否为函数类型  Win11怎么设置应用分屏_Windows11贴靠布局Snap Layouts  C++如何编写函数模板?(泛型编程入门)  Win11无法拖拽文件到任务栏怎么办_Win11开启拖放功能修复【方法】  Python函数接口文档化_自动化说明【指导】  Go语言中slice追加操作的底层共享机制详解  Windows蓝屏错误0x00000023怎么修复_FAT文件系统错误处理  Win11怎么关闭触摸屏_禁用Win11笔记本触摸屏功能设置【教程】  如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧  如何在Golang中处理模块包路径变化_Golang包重命名与导入方法  Mac怎么开启“任何来源”_Mac安装未签名应用的设置方法【解决】  Win11怎么看电池循环次数_Win11笔记本电池寿命检测【命令】  Windows10电脑怎么设置自动连接WiFi_Win10无线网络属性勾选 

 2025-12-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.