читатель python libxml2 и XML_PARSE_RECOVER

я пытаюсь заставить читателя восстанавливать поврежденный XML. Использование параметра libxml2.XML_PARSE_RECOVER с API DOM (libxml2.readDoc) работает и устраняет проблемы с сущностями.

Однако использование параметра с API-интерфейсом чтения (что важно из-за размера документов, которые мы анализируем) не дает работай. Он просто застревает в бесконечном цикле (при этом reader.Read () возвращает -1):

Пример кода (с небольшим примером):

import cStringIO
import libxml2

DOC = "<a>some broken & xml</a>"

reader = libxml2.readerForDoc(DOC, "urn:bogus", None, libxml2.XML_PARSE_RECOVER | libxml2.XML_PARSE_NOERROR)

ret = reader.Read()
while ret:
    print 'ret: %d' % ret
    print "node name: ", reader.Name(), reader.NodeType()
    ret = reader.Read()

Есть идеи, как правильно выполнить восстановление?

8
задан bee 6 October 2010 в 10:43
поделиться