Я перемещаюсь по документу, используя CSS-селекторы с Ruby, но я нашел несколько ошибок css-селектора в Hpricot, которые исправлены в Nokogiri и хотят переключиться.
Единственная проблема, с которой я столкнулся, это выяснить, как получить массив всех дочерних элементов, которые являются «контейнерами» (то есть не текстовыми узлами). Hpricot предоставляет эту функциональность сразу после установки методом контейнеров.
Так что в Hpricot я мог бы сделать:
children = doc.select('*')[0].containers
Но с Nokogiri кажется, что ту же самую функциональность можно получить только с помощью следующего (и я не уверен, работает ли он точно так же):
children = doc.css('*')[0].children.to_a.keep_if {|x| x.type != Nokogiri::XML::Node::TEXT_NODE }
Есть ли лучший способ сделать это?