я пытаюсь заставить читателя восстанавливать поврежденный 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()
Есть идеи, как правильно выполнить восстановление?