![6754722832058c3a22940399f965fc06.png](https://img-blog.csdnimg.cn/img_convert/6754722832058c3a22940399f965fc06.png)
这是一个关于使用lxml.etree进行XML处理的教程。它简要概述了ElementTree API的主要概念,以及一些简单的增强功能,使您作为程序员的生活更轻松。
关注小编后续次序更新
- 本文章主要介绍的是,ElementTree类
- 从字符串和文件中解析
- fromstring()函数
- XML()函数
- parse()函数
- 解析器对象
- 增量解析
ElementTree类
一个ElementTree的主要文档包裹一个树根节点。它提供了两种序列化和一般文档处理方法。
>>> root = etree 。XML (''' ... ... ]> ... ... &tasty; ... root> ... '''' )>>> tree = etree 。ElementTree的(根)>>> 打印(树。DOCINFO 。xml_version )1.0 >>> 打印(树。DOCINFO 。DOCTYPE )>>> 树。docinfo 。public_id = ' - // W3C // DTD XHTML 1.0 Transitional // EN' >>> 树。docinfo 。system_url = '文件://local.dtd' >>> 打印(树。DOCINFO 。DOCTYPE )
一个ElementTree的也是你得到什么,当你调用 解析()函数来解析文件或类似文件的对象(见下面的分析部)。
其中一个重要区别是ElementTree类序列化为完整文档,而不是单个元素。这包括顶级处理说明和注释,以及文档中的DOCTYPE和其他DTD内容:
>>> 打印(etree 。的toString (树)) #LXML 1.3.4和后 ]> parsnips root>
在原始的xml.etree.ElementTree实现中,在lxml中最高为1.3.3,输出看起来与仅序列化根元素时的输出相同:
>>> 打印(etree 。的toString (树。getroot ())) 防风草 根>
此序列化行为在lxml 1.3.4中已更改。之前,树被序列化而没有DTD内容,这使得lxml在输入 - 输出周期中丢失了DTD信息。
从字符串和文件中解析
lxml.etree支持以多种方式从所有重要来源解析XML,即字符串,文件,URL(http / ftp)和类文件对象。主要的解析函数是fromstring()和 parse(),它们都以source作为第一个参数调用。默认情况下,它们使用标准解析器,但您始终可以将不同的解析器作为第二个参数传递。
fromstring()函数
该fromstring()函数解析字符串的最简单的方法:
>>> some_xml_data = “ data root>”>>> root = etree 。fromstring (some_xml_data )>>> 打印(根。标签)根>>> etree 。tostring (root )b' data root>'
XML()函数
的XML()函数的行为类似于fromstring()函数