Gibt es eine Möglichkeit, bei ungültigen Char-Werten iterparse wiederherzustellen?
Ich benutze lxml'siterparse
zum Parsen einiger großer XML-Dateien (3-5Gig). Da einige dieser Dateien ungültige Zeichen haben alxml.etree.XMLSyntaxError
ist geworfen.
Bei Verwendung von lxml.etree.parse kann ich einen Parser bereitstellen, der ungültige Zeichen wiederherstellt:
parser = lxml.etree.XMLParser(recover=True)
root = lxml.etree.parse(open("myMalformed.xml, parser)
Gibt es eine Möglichkeit, die gleiche Funktionalität für iterparse zu erhalten?
Bearbeiten: Die Codierung ist hier kein Problem. Diese XML-Dateien enthalten ungültige Zeichen, die bereinigt werden können, indem ein XMLParser mit recover = True definiert wird. Da ich dafür iterparse verwenden muss, kann ich keinen benutzerdefinierten Parser verwenden. Daher suche ich hier nach den Funktionen, die in meinem obigen Snippet bereitgestellt werden:
context = etree.iterparse(open("myMalformed.xml", events=('end',), tag="Foo") <-- cant recover