Поскольку вы не предоставили образец HTML или желаемый вывод, вот общее решение:
Вы можете выбрать комментарии SGML в XPath с помощью теста узла comment()
; Вы можете удалить их из документа, вызвав .remove
на всех узлах комментариев. Иллюстрированный:
require 'nokogiri'
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html #=> "<b>hello</b> <!-- foo --> world"
doc.xpath('//comment()').remove
p doc.inner_html #=> "<b>hello</b> world"
Обратите внимание, что вышеизложенное изменяет документ, чтобы удалить комментарии. Если вы хотите сохранить исходный документ без изменений, вы можете сделать следующее:
class Nokogiri::XML::Node
def inner_html_reject(xpath='.//comment()')
dup.tap{ |shadow| shadow.xpath(xpath).remove }.inner_html
end
end
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html_reject #=> "<r><b>hello</b> world</r>"
p doc.inner_html #=> "<r><b>hello</b> <!-- foo --> world</r>"
Наконец, обратите внимание, что если вам не нужна разметка, просто запрос самого text
не включает комментарии HTML:
p doc.text #=> "hello world"