Спасибо всем за ваш превосходный вклад.Я смог решить свою проблему, посмотрев на Обработка большого XML-файла с помощью фрагмента libxml-ruby с помощью фрагмента .
Ответ был таков:
reader.expand
и вместо этого используйте:
reader.read
или:
reader.next
в сочетании с:
reader.node
Пока вы не пытаетесь сохранитьузел как есть, отлично работает.Вы хотите немедленно работать с этим узлом, потому что reader.next унесет его.
Чтобы ответить на более ранний ответ, насколько я понимаю, libxml-ruby - это анализатор потоковой передачи.Проблемы с ошибками сегмента возникли при сборе мусора, который вызывал большие утечки памяти.Как только я научился не использовать reader.expand, все пришло в порядок.
ОБНОВЛЕНИЕ:
Я не смог решить мою проблему в конце концов.Похоже, нет никакого способа добраться до поддерева без использования reader.expand.
И поэтому я полагаю, что нет способа прочитать и проанализировать большой XML-файл с помощью libxml-ruby?Ошибка reader.expand утечки памяти была открыта даже без ответа с 2009 года?FAIL FAIL FAIL.