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 

  • Beautifulsoup erkennt nicht lxml
  • Wie kann diese Funktion umgeschrieben werden, um OrderedDict zu implementieren?
  • Holen Sie sich inneren Text aus lxml
  • Parsing defektes XML mit lxml.etree.iterparse
  • HTML-Elemente in lxml werden falsch codiert wie & # x41D; & # x430; & # x439;
  • Lxml: DLL-Last fehlgeschlagen: Das angegebene Modul konnte nicht gefunden werden
  • 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.