Одна проблема заключается в том, что XML-файл искажен.Тег <merchandiser>
не прекращается.Nokogiri скажет вам то же самое, если вы проверите метод errors
после анализа документа:
doc.errors
[
[0] #<Nokogiri::XML::SyntaxError:0x10109b918
attr_reader :code = 77,
attr_reader :column = 1,
attr_reader :domain = 1,
attr_reader :file = nil,
attr_reader :int1 = 1,
attr_reader :level = 3,
attr_reader :line = 12,
attr_reader :str1 = "merchandiser",
attr_reader :str2 = nil,
attr_reader :str3 = nil
>
]
Добавление закрывающего тега </merchandiser>
в конце файла очищает, что вверх:
doc = Nokogiri::XML(File.read('./test.xml'))
#<Nokogiri::XML::Document:0x1009ae038
@node_cache = [],
attr_accessor :errors = [],
attr_reader :decorators = nil
>
После исправления, которое я проанализировал для product
:
doc.search('product').size
=> 20
Имеются <product>
коллизии:
<product>
<URL>
<product />
</URL>
</product>
, которые могут запутать ваш код.Это смутило мой поиск выше, в котором сообщалось о 20 случаях.