Может ли Nokogiri использовать синтаксический анализатор SAX для разбора HTML-фрагмента?

StackOverflow https://stackoverflow.com/questions/2452271

Вопрос

У меня есть этот код.

class MyParser < Nokogiri::XML::SAX::Document
  def characters(string)
    LOG.debug("characters #{string}")
  end

  def start_element(name, attrs = [])
    LOG.debug("start_element #{name}")
  end

  def end_element(name)
    LOG.debug("end_element #{name}")
  end
end

parser = Nokogiri::HTML::SAX::Parser.new(MyParser.new)
parser.parse(File.new($*[0], 'rb'))

Запустите HTML-фрагмент, подобный этому,

<h1>Hello</h1> 
<p>Hi.</p>

выходные данные показывают, что обработан только первый элемент:

start_element h1
characters Hello
end_element h1

Если я оберну фрагмент в html и body теги, весь ввод обрабатывается.

Есть ли способ использовать синтаксический анализатор в стиле SAX для фрагментов HTML?

Это было полезно?

Решение

Вам нужно обернуть свой фрагмент в корневой элемент:

<div>
<h1>Hello</h1> 
<p>Hi.</p>
</div>

должно решить вашу проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top