You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Nokogiri解析XML文件提取特定路径的URL值?

解决方法

你当前代码直接输出<loc>节点对象时,Nokogiri会打印节点对应的XML片段,而非节点内的文本内容。要提取目标URL并筛选符合/a/b子目录的内容,可以通过以下两种方式实现:

方法一:使用XPath内置函数筛选

利用XPath的contains()函数直接在查询时过滤节点,效率更高:

require 'nokogiri'

doc = File.open('./sitemap-en.xml') { |f| Nokogiri::XML(f) }
# 筛选包含指定路径的<loc>节点,并输出其文本内容
doc.xpath('//loc[contains(text(), "https://www.example.com/a/b")]').each do |loc_node|
  puts loc_node.text
end

方法二:Ruby字符串匹配筛选

先获取所有<loc>节点,再用Ruby的字符串方法判断是否符合条件,灵活性更强:

require 'nokogiri'

doc = File.open('./sitemap-en.xml') { |f| Nokogiri::XML(f) }
# 遍历所有<loc>节点,提取文本后筛选
doc.xpath('//loc').each do |loc_node|
  url = loc_node.text
  puts url if url.include?('https://www.example.com/a/b')
end

两种方法都会输出你需要的两个结果:

https://www.example.com/a/b
https://www.example.com/a/b/c

内容的提问来源于stack exchange,提问作者calyxofheld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:24:15