Python 使用cElementTree解析错误无效字符

Python 使用cElementTree解析错误无效字符,python,xml,xml-parsing,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:第4205行第25列此字符:查看,您

我正在尝试使用以下方法,以迭代方式解析一棵树,并在末尾使用校验和:

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:第4205行第25列
此字符:
查看,您会注意到有一个可选的事件参数,您可以在其中报告“开始”事件(“默认情况下结束”事件)。您可以利用它在开始事件后执行elem.clear(),并继续以双分支
if
语句的形式结束事件。

以下是我最后要做的:

  • 将XML文件作为文本读入内存
  • 使用正则表达式查找标记
  • 删除开始标记和结束标记之间的所有内容
  • 重写为XML文件
  • 解析新的XML文件
  • 快走吧

  • 我已经更改了代码,现在是:
    对于event,elem in et.iterparse(“C:\myXMLfile.xml”):如果event==“start”和elem.tag==“Signature”:elem.clear()
    不幸的是,这会产生相同的结果。我能想到的唯一选择是,我脑子里想的就是迭代并删除
    Signature
    标记,然后执行iterparse。这将对性能造成微不足道的影响,因为它仍然处于相同的顺序。我明白你的意思。我不知道在这种情况下如何实现这一点;显然,“开始”事件查找开始标记的结束“>”。至于删除
    签名
    标记,我认为这是我必须要做的,尽管除了逐行写入文件外,我也不知道如何最好地完成。使用这样的过程如何:
    tree=xml.parse(“C:\myXMLfile.xml”)
    。然后抓住根
    rootNode=tree.getroot()
    ,并使用findall(“签名”)获取带有签名标记的元素。不幸的是,解析器在将签名标记加载到内存时抛出错误。我想我可以尝试使用RE删除签名行,然后将所有内容加载到内存中。