我使用ElementTree在Python上解析XML文件。我发现cElementTree的C实现与常规实现相比非常快速。但我也发现建设:cElementTree.interparse()不接受自定义分析器
xml.etree.cElementTree.iterparse(filename, parser=MyCystomParser())
不会工作。你会看到类似这样的:
__init__() got an unexpected keyword argument 'parser'
同时相同的结构与“xml.etree.ElementTree.iterparse”确实工作。
我使用自定义解析器在解析XML文件时保留注释(默认解析器忽略/删除它)。
有谁知道为什么在C实现它不起作用?当cElementTree发布时,'分析器'参数已经在ElementTree中。
为什么你需要一个自定义分析器? iterparse的要点是,任何定制都由调用它的代码完成,而不是隐藏在解析器的状态机中。 – user4815162342
解析XML文件时保存注释 –
[documentation](http://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse)明确指出:'如果不是给定的,使用标准的XMLParser解析器。语法分析器不被cElementTree支持' – karthikr