2010-02-28 6 views
13

Conozco un poco de dom y me gustaría aprender sobre ElementTree. Python 2.6 tiene una implementación algo más antigua de ElementTree, pero todavía utilizable. Sin embargo, parece que viene con dos clases diferentes: xml.etree.ElementTree y xml.etree.cElementTree. ¿Alguien podría ser tan amable de iluminarme con sus diferencias? Gracias.¿Cuál es la diferencia entre cElementtree y ElementTree?

+2

Como un aparte, puede encontrar lxml.etree interesante; si bien es un módulo de terceros, es un superconjunto de la especificación ElementTree e incluye funciones útiles, como el soporte real de XPath. –

Respuesta

24

Es la misma biblioteca (misma API, mismas características), pero elementtree está implementado en Python y cElementTree se implementa en C.

Si puede, use la implementación C porque está optimizada para un análisis rápido y uso de poca memoria, y es 15-20 veces más rápido que la implementación de Python.

Utilice la versión de Python si se encuentra en un entorno limitado (la carga de la biblioteca C no está permitida).

+0

Hay algunas diferencias sutiles. En cElementTree, el método 'findtext' no tenía un parámetro' default' (visto con Python 2.7.13). Sin embargo, esto se puede reemplazar fácilmente con 'findtext (" ... ") o" defaultValue "'. –

6

De http://effbot.org/zone/celementtree.htm:

El módulo cElementTree es una implementación de la API C elementtree, optimizado para el análisis rápido y bajo consumo de memoria. En los documentos típicos, cElementTree es 15-20 veces más rápido que la versión Python de elementtree, y utiliza 2-5 veces menos memoria

4

ElementTree se implementa en python mientras que cElementTree se implementa en C. Así, cElementTree será más rápido, pero también no estará disponible cuando no tenga acceso a C, como en Jython o IronPython o en Google App Engine.

Funcionalmente, deberían ser equivalentes.

+1

Referencia: http://docs.python.org/library/xml.etree.elementtree.html. "Una implementación C de esta API está disponible como xml.etree.cElementTree. " –

Cuestiones relacionadas