我有一个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+)/, '')