lxml を使用してiterparse
、いくつかの大きな XML ファイル (3 ~ 5Gig) を解析しています。これらのファイルの一部には無効な文字が含まれているため、 alxml.etree.XMLSyntaxError
がスローされます。
lxml.etree.parse を使用する場合、無効な文字を回復するパーサーを提供できます。
parser = lxml.etree.XMLParser(recover=True)
root = lxml.etree.parse(open("myMalformed.xml, parser)
iterparse で同じ機能を得る方法はありますか?
編集: ここではエンコーディングは問題ではありません。これらの XML ファイルには無効な文字が含まれており、recover=True を指定して XMLParser を定義することでサニタイズできます。これには iterparse を使用する必要があるため、カスタム パーサーは使用できません。したがって、上記のスニペットで提供されている機能を探しています。
context = etree.iterparse(open("myMalformed.xml", events=('end',), tag="Foo") <-- cant recover