有没有办法在无效字符值上恢复iterparse?
我正在使用lxml的iterparse
来解析一些很大的XML文件(3-5GB)。因为这些文件里有一些无效字符,所以会抛出lxml.etree.XMLSyntaxError
错误。
当我使用lxml.etree.parse时,可以提供一个解析器,这样在遇到无效字符时可以自动修复:
parser = lxml.etree.XMLParser(recover=True)
root = lxml.etree.parse(open("myMalformed.xml, parser)
有没有办法让iterparse
也具备同样的功能呢?
补充:这里的编码不是问题。这些XML文件里有一些无效字符,可以通过定义一个XMLParser并设置recover=True来清理这些字符。因为我需要使用iterparse
,所以不能使用自定义解析器。因此,我在这里寻找我上面代码片段中提供的功能:
context = etree.iterparse(open("myMalformed.xml", events=('end',), tag="Foo") <-- cant recover
1 个回答
0
当你提到无效字符时,是指unicode字符吗?如果是的话,你可以试试
lxml.etree.XMLParser(encoding='UTF-8', recover=True)
如果你指的是格式不正确的XML,那这个方法显然就不管用了。如果你能把错误追踪信息发出来,我们就能了解XMLSyntaxError
的具体情况,这样能提供更多的信息。