0

我正在尝试解析一个非常大的 XML 文件并使用小写字母并删除标点符号。问题是,当我尝试使用cET parse functionfor big files 解析此文件时,有时会遇到格式错误的标签或字符,这会引发syntax error

SyntaxError: not well-formed (invalid token): line 639337, column 4

注意:我几乎不可能读取文件,所以我看不出问题出在哪里。

我怎样才能跳过或解决这个问题?

from xml.etree import cElementTree as cET

for event, elem in cET.iterparse(xmlFile, events=("start", "end")):
    ...do something...
4

2 回答 2

4

使用lxml而不是标准库ElementTree;它支持相同的 API,但可以处理损坏的 XML;如果可能,它会尝试修复它:

parser = etree.XMLParser(recover=True)
context = etree.iterparse(filename, parser)
于 2012-10-14T13:41:58.980 回答
0

您可以使用类似xmllint验证和清理 XML 的工具。此工具报告的错误应该可以帮助您修复 XML 文件。

编辑:一个例子:

$ cat invalid.xml 
<?xml version="1.0"?>
<foo>
<bar>
</foo>
$ xmllint invalid.xml 
invalid.xml:4: parser error : Opening and ending tag mismatch: bar line 3 and foo
</foo>
      ^
invalid.xml:5: parser error : Premature end of data in tag foo line 2

^
于 2012-10-14T13:30:43.353 回答