Нокогири - Получить атрибуты? - PullRequest
0 голосов
/ 26 марта 2019

Попытка использовать nokogiri для получения значений атрибутов:

require 'nokogiri'
doc  = Nokogiri::XML("<root attr=1></root>")
doc.root.attributes

#=> {}

Почему это не работает ...?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Медитируйте на это:

require 'nokogiri'
doc  = Nokogiri::XML("<root attr=1></root>")
doc.errors # => [#<Nokogiri::XML::SyntaxError: 1:12: FATAL: AttValue: " or ' expected>, #<Nokogiri::XML::SyntaxError: 1:12: FATAL: attributes construct error>, #<Nokogiri::XML::SyntaxError: 1:12: FATAL: Couldn't find end of Start Tag root line 1>, #<Nokogiri::XML::SyntaxError: 1:12: FATAL: Extra content at the end of the document>]

doc.errors ваш друг.

1 голос
/ 29 марта 2019

Значения атрибута XML всегда должны быть в кавычках.

Поскольку вы использовали двойные кавычки снаружи, вы должны использовать одинарные кавычки внутри:

require 'nokogiri'
doc  = Nokogiri::XML("<root attr='1'></root>")
doc.root.attributes

Или выможет делать обратное и иметь двойные кавычки внутри с единственными кавычками снаружи.

doc  = Nokogiri::XML('<root attr="1"></root>')
...