首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cElementTree.interparse()不接受自定义解析器

cElementTree.interparse()不接受自定义解析器
EN

Stack Overflow用户
提问于 2013-12-11 20:11:47
回答 1查看 846关注 0票数 0

我用ElementTree解析Python上的XML文件。我发现与常规的实现相比,cElementTree的C实现工作得非常快。但我也发现了建筑:

代码语言:javascript
复制
xml.etree.cElementTree.iterparse(filename, parser=MyCystomParser())

不管用。你会看到这样的情况:

代码语言:javascript
复制
__init__() got an unexpected keyword argument 'parser'

同时,与“xml.etree.ElementTree.iterparse”相同的结构也起作用。

我使用自定义解析器在解析XML文件时保留注释(默认解析器忽略/删除它)。

有人知道为什么在C实现中它不起作用吗?“解析器”参数在ElementTree发布时已经在cElementTree中了。

EN

回答 1

Stack Overflow用户

发布于 2013-12-11 20:22:41

有人知道为什么在C实现中它不起作用吗?

嗯,是的,因为不工作是http://docs.python.org/2.7/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse

cElementTree不支持解析器。

但他们为什么不让它起作用呢?

并入Python2.5的ElementTree版本在iterparse上没有parser参数。此特性仅在Python3.2中添加。然后,它被移植到Python2.7.*(注意,它不在2.6中)。

Python3.x没有cElementTree-instead,它只有一个ElementTree实现,只要有可能就使用C加速代码。因此,将新特性移植到cElementTree比向ElementTree提供更多的工作。想必这对任何人来说都不够重要。

另外,请注意,ElementTree是在Python之外开发和维护的,由Frederik,这里完成。我相信格雷戈里·P·史密斯( Gregory P. Smith )推动了整合到stdlib的工作,但我可能错了。因此,您可以询问其中任何一个,或者在python列表中询问,如果需要更多的详细信息。但我很肯定答案将是“这不重要到足以费心去做”。

*从技术上讲,它是在Python1.3中添加的,该版本包含在Python3.2和2.7中。请参阅2.73.2的新文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20528990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档