Gibt es eine Möglichkeit, iterparse auf ungültige Char-Werte wiederherzustellen?

Ich verwende lxml's iterparse , um einige große XML-Dateien (3-5Gig) zu analysieren. Da einige dieser Dateien ungültige Zeichen haben, wird ein lxml.etree.XMLSyntaxError geworfen.

Bei der Verwendung von lxml.etree.parse kann ich einen Parser bereitstellen, der auf ungültigen Zeichen zurückgewinnt:

 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 bekommen?

Bearbeiten: Encoding ist hier kein Problem. Es gibt ungültige Zeichen in diesen XML-Dateien, die durch die Definition eines XMLParsers mit recover = True saniert werden können. Da muss ich iterparse dafür verwenden, kann ich keinen benutzerdefinierten Parser verwenden. Also bin ich auf der Suche nach der Funktionalität in meinem Snippet oben für hier hier:

 context = etree.iterparse(open("myMalformed.xml", events=('end',), tag="Foo") <-- cant recover 

  • Lxml entfernen <? Xml ...> Tags beim Parsing?
  • LXML kann keine Webseite mit Fehler abrufen "Fehler beim Laden der HTTP-Ressource"
  • Effizienter Weg, um durch XML-Elemente zu iterieren
  • Wie kann ich Namespaces aus einem lxml-Baum herausziehen?
  • XML-Deklaration standalone = "ja" lxml
  • Aufbau von lxml für Python 2.7 unter Windows
  • One Solution collect form web for “Gibt es eine Möglichkeit, iterparse auf ungültige Char-Werte wiederherzustellen?”

    Wenn du ungültige Zeichen sagst, meinst du Unicode-Charaktere? Wenn ja können Sie versuchen

     lxml.etree.XMLParser(encoding='UTF-8', recover=True) 

    Wenn Sie fehlerhaftes XML bedeuten, dann wird das offensichtlich nicht funktionieren. Wenn du deinen XMLSyntaxError posten kannst, können wir die Natur des XMLSyntaxError der mehr Informationen liefert.

    Python ist die beste Programmiersprache der Welt.