Получить структуру HTML с помощью Nokogiri - PullRequest
2 голосов
/ 21 ноября 2011

Моя задача - получить структуру HTML документа без данных.От:

<html>
  <head>
    <title>Hello!</title>
  </head>
  <body id="uniq">
    <h1>Hello World!</h1>
  </body>
</html>

Я хочу получить:

<html>
  <head>
    <title></title>
  </head>
  <body id="uniq">
    <h1></h1>
  </body>
</html>

Существует несколько способов извлечения данных с помощью Nokogiri, но я не смог найти способ выполнить обратную задачу.

ОБНОВЛЕНИЕ: найденное решение представляет собой комбинацию из двух ответов, которые я получил:

doc = Nokogiri::HTML(open("test.html"))
  doc.at_css("html").traverse do |node|
    if node.text?
      node.remove
    end
  end
    puts doc

Вывод - именно тот, который я хочу.

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Звучит так, будто вы хотите удалить все текстовые узлы.Вы можете сделать это так:

doc.xpath('//text()').remove
puts doc
1 голос
/ 21 ноября 2011

Траверс документа.Для каждого узла удалите то, что вы не хотите.Затем запишите документ.

Помните, что Нокогири может изменить документ. Doc

...