У Нокогири есть отличная документация, в которой четко указано, что Nokogiri::XML::NodeSet#inner_text
не делает то, что вы ожидаете.Вместо этого он объединяет значения текстовых узлов .
Кроме того, нет способа просто набрать map(&:text)
, как предлагается в документации, поскольку вы, вероятно, хотите сохранить принадлежность <Srng>
дочерние элементы, которые, очевидно, были бы невозможны при массовых запросах.
При этом вам необходимо запросить соответствующих родителей и выполнить итерации дочерних элементов:
d.xpath('//Nmbbr').
map do |node|
[
node.xpath("./EE"),
node.xpath("./PR"),
node.xpath("./Srng").map do |node|
%w[Brng Erng].map { |path| node.xpath("./#{path}") }
end
]
end.
map { |nodes| nodes.flatten.map(&:text) }
#⇒ [["3Z9", "45"], ["4PL", "156", "73359", "86353"]]
Теперь выполните итерацию результата и распечатайте его, как хотите.