Я использую парсер Nokogiri SAX для поиска определенного фрагмента в документе XML, но как только я закончил, нет никаких оснований продолжать сканирование документа.Прерывание Nokogiri SAX Parser?
Есть ли способ немедленно прекратить разбор?
Я использую парсер Nokogiri SAX для поиска определенного фрагмента в документе XML, но как только я закончил, нет никаких оснований продолжать сканирование документа.Прерывание Nokogiri SAX Parser?
Есть ли способ немедленно прекратить разбор?
Просмотрев исходный код для Nokogiri, я не считаю это возможно.
Nokogiri, в какой-то момент в ответ на какой-либо метод Ruby или возвращаемое значение, необходимо вызвать xmlStopParser()
в libxml2. Потому что:
xml_sax_parser.c
) иЯ пришел вывод о том, что Нокогири в настоящее время не имеет возможности остановить разбор.
Не могли бы вы устранить это исключение? Это было бы довольно неприятно, злоупотребление системой исключений, и я должен был сделать какую-то покаяние, даже подумав об этом. –
@muistooshort Ты ужасный, ужасный человек. +1 для этой идеи. :) Тем не менее, я был бы немного обеспокоен тем, что это _might_ оставит память, вырвающуюся из ушей анализатора SAX libxml2, который, возможно, никогда не смог «обеспечить» его очистку. – Phrogz
Это действительно работает, но я слишком стыжусь, чтобы выразить это как ответ. –