我了解一些DOM,并希望学习ElementTree。Python 2.6有一个相对较旧的ElementTree实现,但仍可用。然而,它似乎带有两个不同的类:xml.etree.ElementTree和xml.etree.cElementTree。请问有人能友情说明它们的区别吗?谢谢。
这是同一个库(相同的API、相同的功能),但ElementTree是用Python实现的,而cElementTree是用C实现的。
如果可以的话,请使用C实现,因为它针对快速解析和低内存使用进行了优化,比Python实现快15-20倍。
如果您在受限环境中(不允许加载C库),则使用Python版本。
findtext
方法没有default
参数(在Python 2.7.13中看到)。不过这可以很容易地用findtext("...") or "defaultValue"
替换。 - Florian Winter但现在它们是同一件事 Python 3.3以后,在github源代码cElementTree
# cElementTree.py
from xml.etree.ElementTree import *
这只是为了向后兼容
从https://docs.python.org/3/library/xml.etree.elementtree.html:
从版本3.3开始更改:该模块将在可用时使用快速实现。xml.etree.cElementTree 模块已被弃用。
因此,对于Python 3.3及更高版本,请使用:
import xml.etree.ElementTree as ET
来自http://effbot.org/zone/celementtree.htm:
cElementTree模块是ElementTree API的C实现,经过优化以实现快速解析和低内存使用。在典型文档上,cElementTree比ElementTree的Python版本快15-20倍,并且使用的内存量少2-5倍。
ElementTree是用Python实现的,而cElementTree是用C实现的。因此,cElementTree速度更快,但在没有访问C的情况下不可用,例如在Jython或IronPython或Google App Engine中。
从功能上来说,它们应该是等效的。