有没有一种方法可以恢复对无效Char值的iterparse



我正在使用lxml的iterparse来解析一些大的XML文件(3-5Gig)。由于其中一些文件包含无效字符,因此会引发lxml.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

当你说无效字符时,你指的是unicode字符吗?如果是这样,你可以试试

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

如果您的意思是格式错误的XML,那么这显然是行不通的。如果您可以发布回溯,我们可以看到XMLSyntaxError的性质,它将提供更多信息。

最新更新