ParseError与cElementTree无效的字符

时间:2012-06-07 20:33:29

标签: python xml xml-parsing

我正在尝试使用以下方法迭代解析一个带校验和的树:

import xml.etree.cElementTree as et
for event, elem in et.iterparse("C:\myXMLfile.xml"):
    if elem.tag == "Signature":
        elem.clear()

这会在此字符上引发ParseError: reference to invalid character number: line 4205, column 25<Signature value="e?'O;????5?u??c???]????<??jX" />

我认为elem.clear()语句可以解决这个问题,但似乎它在清除之前处理​​了属性。有没有办法可以清除这个元素而不先处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

这是我最后做的事情:

  1. 将XML文件作为文本读入内存。
  2. 使用正则表达式查找标记。
  3. 删除开始和结束标记之间的所有内容。
  4. 重写为XML文件。
  5. 解析新的XML文件。
  6. 继续我的快乐。

答案 1 :(得分:0)

查看definition of xml.etree.cElementTree.iterparse,您会注意到事件的可选参数,您可以在其中报告“开始”事件(默认情况下为“结束”事件)。您可以利用它在start事件后执行elem.clear()并继续以双分支if语句结束事件。