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?
Respuesta
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).
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 "'. –
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
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.
Referencia: http://docs.python.org/library/xml.etree.elementtree.html. "Una implementación C de esta API está disponible como xml.etree.cElementTree. " –
- 1. ¿Cuál es la diferencia entre {0} y ""?
- 2. Cuál es la diferencia entre = y: =
- 3. ¿Cuál es la diferencia entre .ToString (+) y ""
- 4. Cuál es la diferencia entre $ (...) y `...`
- 5. ¿cuál es la diferencia entre:.! y: r !?
- 6. ¿Cuál es la diferencia entre ".equals" y "=="?
- 7. ¿Cuál es la diferencia entre dict() y {}?
- 8. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 9. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 10. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 11. ¿Cuál es la diferencia entre + = y = +?
- 12. ¿Cuál es la diferencia entre " " y ""?
- 13. Cuál es la diferencia entre $ y jQuery
- 14. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 15. Cuál es la diferencia entre la función() {}() y la función() {}()
- 16. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 17. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 18. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 19. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 20. ¿Cuál es la diferencia entre el colado y la coerción?
- 21. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 22. ¿Cuál es la diferencia entre el casting y la conversión?
- 23. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 24. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 25. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 26. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 27. ¿cuál es la diferencia entre el material y la textura?
- 28. ¿Cuál es la diferencia entre el marco y la arquitectura?
- 29. ¿Cuál es la diferencia entre la carpeta vim72 y vimfiles?
- 30. ¿cuál es la diferencia entre la lex y yacc
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. –