Алехандро уже ответил на это в своем комментарии (+1), но я тоже добавляю этот ответ, потому что он не указал код Nokogiri.
Выбор элементов в некотором пространстве имен с помощью Nokogiri с XPath
Элементы, которые вы пытаетесь выбрать, находятся в пространстве имен по умолчанию, которое в данном случае выглядит как http://www.w3.org/2005/Atom
. Обратите внимание на атрибут xmlns="
в элементе entry
. Вместо этого ваше выражение XPath соответствует элементам, которые не находятся ни в одном пространстве имен. По этой причине ваш код работал без пространств имен
Вам необходимо определить контекст пространства имен для вашего выражения XPath и указать шаги XPath для соответствия элементам в этом пространстве имен. AFAIK должно быть несколько разных способов сделать это с помощью Nokogiri, один из них показан ниже
xml.xpath("//a:author/a:name", {"a" => "http://www.w3.org/2005/Atom"})
Обратите внимание, что здесь мы определяем отображение пространства имен на префикс и используем этот префикс (a
) в выражении XPath.