Как перебирать вложенные элементы XML с помощью Nokogiri - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть XML-файл, который содержит вложенные элементы ниже:

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

Я уже использовал функцию at_xpath для извлечения приведенного выше фрагмента XML-файла из файла XML, который был сохранен в переменной.Можно ли перебрать эту переменную и сохранить содержимое вложенных элементов xml с помощью Ruby Nokogiri?Если да, то как это сделать?

Я хотел бы добавить каждый элемент в SourceDetails к другой переменной с последующим косой чертой.Для приведенного выше примера я бы хотел получить контент в формате Origin / Identifier / 0

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Есть простой способ

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+)/, '')
0 голосов
/ 14 сентября 2018

Вот быстрый и грязный.Поскольку я не уверен, как вы храните вашу переменную, содержащую 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"

Помогает ли это вам в любом случае?

...