read library example etree dict create python lxml elementtree

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.