信息发布→ 登录 注册 退出

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

发布时间:2025-12-15

点击量:
最常用、最推荐的方式是用 Nokogiri 库,它功能强大、语法简洁、支持 XPath 和 CSS 选择器,并能自动处理编码和 malformed XML。

ruby怎么解析xml ruby nokogiri库使用方法

Ruby 解析 XML 最常用、最推荐的方式是用 Nokogiri 库,它功能强大、语法简洁、支持 XPath 和 CSS 选择器,还能自动处理编码和 malformed XML(带容错)。

安装和引入 Nokogiri

终端运行安装命令:

gem install nokogiri

在 Ruby 脚本中引入:

require 'nokogiri'

从字符串解析 XML

适合处理 API 返回的 XML 响应、配置片段等小段内容:

  • Nokogiri::XML(string) 创建文档对象
  • 注意:默认严格校验,若 XML 不规范会报错;加 :strict => false 可跳过部分错误

示例:

xml =   
    Apple
    Banana
  

XML
doc = Nokogiri::XML(xml)

用 XPath 或 CSS 选择器提取数据

Nokogiri 支持两种主流查询方式,选你习惯的即可:

AI Code Reviewer AI Code Reviewer

AI自动审核代码

AI Code Reviewer 112 查看详情 AI Code Reviewer
  • doc.xpath('//item') → 返回所有 元素节点数组
  • doc.css('item') → 等效的 CSS 写法(更接近前端习惯)
  • 获取属性:node['id']node.attr('id')
  • 获取文本内容:node.text.strip(.strip 防空格干扰)

完整提取示例:

doc.xpath('//item').each do |item|
  puts "#{item['id']}: #{item.text.strip}"
end
# 输出:
# 1: Apple
# 2: Banana

从文件或 URL 加载 XML

读本地文件:

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

直接加载远程 URL(需网络):

doc = Nokogiri::XML(URI.open('https://example.com/api.xml'))

⚠️ 注意:生产环境建议加超时和异常处理,比如用 Net::HTTP 手动请求再传给 Nokogiri,更可控。

基本上就这些。Nokogiri 解析 XML 不复杂但容易忽略容错和编码问题,加上 :encoding => 'UTF-8' 或用 Nokogiri::XML.parse(..., &:noblanks) 清理空白节点,能省不少调试时间。

以上就是Ruby怎么解析XML Ruby Nokogiri库使用方法的详细内容,更多请关注其它相关文章!


相关文章: Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  Lar*el 8 多关键词数据库搜索优化实践  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  必由学官方网站入口 必由学学生教师共用登录通道  Typer应用中动态命令行参数的解析与处理  Go语言HTML解析:利用Goquery精准获取指定元素内容  如何配置Composer的PSR-4自动加载_Composer自动加载命名空间映射实践教程  J*aScript Promise链中如何正确终止后续.then执行并处理错误  在Qt QML中通过Python字典动态更新TextEdit内容的教程  poki免费入口快捷访问 poki人气小游戏直接玩站点  优化Django表单:提交验证失败后保留用户输入  铁路12306的积分有效期是多久_铁路12306积分有效期说明  C++如何解决segmentation fault_C++段错误调试与原因分析  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  Composer如何在生产环境安全地执行composer update  响应式图片在网页设计中的正确实现方法  J*aScript设计模式实践_j*ascript代码优化  Web Components中自定义开关组件状态同步的常见陷阱与解决方案  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  抖音网页版快捷访问 抖音网页版网页版入口操作教程  如何在 Windows 11 中启动游戏手柄设置  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  处理Kafka消息时会话超时与实现幂等性消费者  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  优化大型XML文件解析:基于Python流式处理的内存高效方案  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  2026年CSGO开箱网站推荐 CSGO开箱平台精选  快手网页版在线登录 快手网页版官网入口快速访问  jQuery Mask 插件中实现电话号码固定前导零的教程  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  poki网页游戏推荐_poki免费游戏平台入口  妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画  微博网页版直接访问 微博网页版账号管理快速入口  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  Golang如何使用const iota_Go iota常量计数器讲解  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  微信网页版登录教程_微信网页版登录入口在哪  Win11怎么开启省电模式_Win11电池节电模式自动开启  PostgreSQL海量数据高效导入策略:Python与Django实践指南  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  高德地图沿途添加点失败如何解决 高德多点规划方法 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!