Я использую Nokogiri для изменения дерева HTML и вывода кода.Мне нужно изменить способ вывода определенного узла на html (подробности ниже), поэтому я выделил подклассы Nokogiri::XML::Node
.
Как переопределить поведение вывода этого подкласса?
Прямо сейчас, если я переопределяю to_html()
, то получаю нужное отображение при вызове to_html()
для экземпляров Nokogiri::HTML::DocumentFragment
, но когда я вызываю его в случаях Nokogiri::HTML::Document
, нормальное поведение вывода вступает во владение.Это не сработает, потому что мне действительно нужно внести изменения в заголовок документа (который исключен из экземпляров DocumentFragment).
Почему мне нужно изменить вывод HTML:
Мне нужно иметь возможность включить непаренный тег </noscript>
для использования GWO с моим кодом.Тем не менее, я не могу добавить конечный тег без партнера в дереве HTML.
С Nokogiri я не могу добавить его как текст, так как <
и >
экранируются как html-коды символов.
Я не могу использовать Hpricot для этого проекта, потому что я запускаю его из-за плохого кода (написанного другими на работе), и Hpricot не сохранит ошибки, о которых идет речь (например, поместив элемент блока внутрьэлемента <a>
).(Нет, я не собираюсь выслеживать все плохие HTML и исправлять их.)
Спецификации: WinXP, Ruby 1.8.6, Nokogiri 1.4.4
Обновление:
По причине, которую я не могу догадаться, когда я создаю конструктор для своего подкласса, независимо от того, сколько параметров мне требуется для конструктора подкласса, я получаю ошибки, если яукажите любое число, кроме двух (количество параметров, необходимых для суперкласса).
class NoScript < Nokogiri::XML::Node
def initialize(doc)
super("string", doc)
end
end
У меня не было этой проблемы с другими классами.Я что-то упустил?