python - library - ¿Cuáles son las diferencias entre lxml y ElementTree?
xml.etree.elementtree example (2)
Cuando se trata de generar datos XML en Python , hay dos bibliotecas que a menudo veo recomendadas: Lxml y Lxml
Por lo que puedo decir, las dos bibliotecas son muy similares entre sí. Ambos parecen tener nombres de módulos, pautas de uso y funcionalidad similares. Incluso las declaraciones de importación son bastante similares.
# Importing lxml and ElementTree
import lxml.etree
import xml.etree.ElementTree
¿Cuáles son las diferencias entre las bibliotecas lxml
y lxml
para Python?
No diría que lxml es más rápido que el ET en general, ya que ambos módulos ofrecen toneladas de funcionalidad. Para proporcionar un poco de contexto, ElementTree también es compatible con XPath, pero particularmente ET tiene una función única y útil llamada iterparse()
que rehace el documento XML como un iterable. Esto da como resultado un análisis mucho más rápido, especialmente para archivos XML grandes.
La propia ET API crea tipos de elementos que son un cruce híbrido entre una lista y un diccionario. Esto puede significar dolores de cabeza para quienes son nuevos en el módulo, pero siéntese con él y verá que es bastante flexible.
ElementTree viene incorporado con la biblioteca estándar de Python que incluye otros tipos de módulos de datos como json
y csv
. Esto significa que el módulo se envía con cada instalación de Python. Para la mayoría de las operaciones XML normales, incluyendo la creación de árboles de documentos y la búsqueda simple y el análisis de los atributos de los elementos y los valores de los nodos, incluso los espacios de nombres, ElementTree
es un manejador confiable.
Lxml es un módulo de terceros que requiere instalación. De muchas maneras, lxml
realidad extiende ElementTree
ya que la mayoría de las operaciones en el módulo integrado están disponibles. La principal de esta extensión es que lxml
compatible con XPath 1.0 y XSLT 1.0. Además, lxml
puede analizar documentos HTML que no son compatibles con XML y, por lo tanto, se utiliza para operaciones de pandas.read_html()
web e incluso como analizador en BeautifulSoup y motor en Pandas, pandas.read_html()
. Otras características comunes y útiles de lxml incluyen pretty_print output, objectify
y sax
support. Por supuesto, también como un módulo de terceros, las versiones con características adicionales son fácilmente accesibles en comparación con la biblioteca estándar.