Sto cercando di ottenere un lettore da recuperare da un XML rotto. L'utilizzo dell'opzione libxml2.XML_PARSE_RECOVER con DOM api (libxml2.readDoc) funziona e recupera dai problemi di entità.python libxml2 reader e XML_PARSE_RECOVER
Tuttavia, l'utilizzo dell'opzione con l'API del lettore (che è essenziale a causa delle dimensioni dei documenti che stiamo analizzando) non funziona. E 'appena si blocca in un ciclo perpetuo (con reader.Read() restituisce -1):
codice di esempio (con piccolo esempio):
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()
Tutte le idee come recuperare correttamente?
Sì: 'while ret == 1:'. Vedi http://xmlsoft.org/xmlreader.html. –
Grazie ma questo non si riprende, si interrompe. Quindi, per quanto sopra, otterrei solo il tag . Il DOM api si traduce in una struttura di documenti con il recupero che fa semplicemente cadere il & - che è idealmente quello che mi piacerebbe (equivalente) dall'API del lettore. – bee