0

我正在尝试迭代地解析最后带有校验和的树,使用:

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()声明将是一种解决方法,但似乎它在清除之前处理​​了该属性。有没有办法在不先处理它的情况下清除这个元素?

4

2 回答 2

1

这就是我最终要做的事情:

  1. 将 XML 文件作为文本读入内存。
  2. 使用正则表达式查找标记。
  3. 删除开始标签和结束标签之间的所有内容。
  4. 重写为 XML 文件。
  5. 解析新的 XML 文件。
  6. 继续我的快乐之路。
于 2013-04-11T21:53:17.890 回答
0

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

于 2012-06-07T23:10:06.823 回答