如何使用 Nokogiri 遍历嵌套的 xml 元素

How to iterate through nested xml elements using Nokogiri

我有一个 xml 文件,其中包含以下嵌套元素:

<SourceDetails>
    <Origin>Origin</Origin>
    <Identifier>Identifier</Identifier>
    <Version>0</Version>
</SourceDetails>

我已经使用函数 at_xpath 从存储在变量中的 xml 文件中提取了上述 xml 片段。是否可以遍历此变量并使用 Ruby Nokogiri 存储嵌套 xml 元素的内容?如果是这样,这是怎么做到的?

我想将 SourceDetails 中的每个元素附加到另一个变量,后跟一个正斜杠。对于上面的例子,我想获取格式为Origin/Identifier/0

的内容

这是一个快速而肮脏的。由于我不确定您如何存储包含 XML 的变量,为了确保我得到的是实际的 XML 数据,我实际上从文件中读取了 XML 数据,这给了我们:

require 'nokogiri'

xml = File.open('source_of_xml.xml') { |f| Nokogiri::XML(f) }

values = []
xml.xpath('SourceDetails').each do |elem|
   values << elem.text.gsub(/\n/, "").split
end

p values.first.join("/") #assing this to variable you want. 

# => "Origin/Identifier/0"

这对您有帮助或指导吗?

有一个简单的方法

require "nokogiri"
xmlFileData = Nokogiri::XML(File.open('./xmlFile.xml'))
dataArr = xmlFileData.at_xpath("//SourceDetails").text.split("\n")
dataArr.delete_at(0)
puts dataArr.join("/").gsub(/(\s+)/, '')