lxml和ElementTree有什么区别?
当谈到在Python生成XML数据,还有我经常看到推荐的两个库:
LXML 和
ElementTree的
据我所知,这两个库彼此非常相似。它们似乎都具有相似的模块名称,使用准则和功能。甚至import语句也非常相似。
# Importing lxml and ElementTree
import lxml.etree
import xml.etree.ElementTree
lxml
和ElementTree
Python库之间的区别是什么?
-
ElementTree内置于Python标准库中,该库包含其他数据模块类型,例如
json
和csv
。这意味着该模块随Python的每次安装一起提供。对于大多数常规XML操作而言,ElementTree
可靠的处理程序是可靠的处理程序,包括构建文档树以及对元素属性和节点值(甚至是名称空间)进行简单的搜索和解析。Lxml是需要安装的第三方模块。
lxml
实际上,由于内置模块中的大多数操作都可用,因此实际上有许多 扩展
ElementTree
。此扩展中的主要功能是同时lxml
支持XPath 1.0和XSLT
1.0。此外,lxml
可以解析不符合XML的HTML文档,因此可以用于网络抓取操作,甚至可以用作BeautifulSoup中的解析器和Pandas中的引擎pandas.read_html()
。lxml的其他有用的通用功能包括 pretty_print
输出objectify
和sax
支持。当然,作为第三方模块,与标准库相比,具有附加功能的版本也易于访问。