我使用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