如何使用Nokogiri迭代嵌套的xml元素

问题描述 投票:1回答:2

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

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

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

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

ruby nokogiri
2个回答
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"

这对你有帮助或指导吗?


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+)/, '')
© www.soinside.com 2019 - 2024. All rights reserved.