2

我正在使用 lxmliterparse来解析一些大的 XML 文件(3-5Gig)。由于其中一些文件包含无效字符,lxml.etree.XMLSyntaxError因此会抛出 a。

使用 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
4

1 回答 1

0

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

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

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

于 2013-02-18T12:46:22.410 回答