2011-12-08 3 views
3

Я использую парсер Nokogiri SAX для поиска определенного фрагмента в документе XML, но как только я закончил, нет никаких оснований продолжать сканирование документа.Прерывание Nokogiri SAX Parser?

Есть ли способ немедленно прекратить разбор?

ответ

2

Просмотрев исходный код для Nokogiri, я не считаю это возможно.

Nokogiri, в какой-то момент в ответ на какой-либо метод Ruby или возвращаемое значение, необходимо вызвать xmlStopParser() в libxml2. Потому что:

  1. Я не вижу эту функцию в любом месте в the source code (включая исходный код для xml_sax_parser.c) и
  2. Я не нахожу никаких хитов, когда погуглить для "Nokogiri" "xmlStopParser"

Я пришел вывод о том, что Нокогири в настоящее время не имеет возможности остановить разбор.

+4

Не могли бы вы устранить это исключение? Это было бы довольно неприятно, злоупотребление системой исключений, и я должен был сделать какую-то покаяние, даже подумав об этом. –

+2

@muistooshort Ты ужасный, ужасный человек. +1 для этой идеи. :) Тем не менее, я был бы немного обеспокоен тем, что это _might_ оставит память, вырвающуюся из ушей анализатора SAX libxml2, который, возможно, никогда не смог «обеспечить» его очистку. – Phrogz

+0

Это действительно работает, но я слишком стыжусь, чтобы выразить это как ответ. –

Смежные вопросы