python中ElementTree API的使用

本文档详细介绍了Python的lxml.etree库中ElementTree API的使用,包括从字符串和文件解析XML,如fromstring()、XML()和parse()函数,以及解析器对象的配置,演示了如何删除空白文本和处理DTD内容。此外,还讨论了ElementTree类在序列化方面的特点。
摘要由CSDN通过智能技术生成

这是一个关于使用lxml.etree进行XML处理的教程。它简要概述了ElementTree API的主要概念,以及一些简单的增强功能,使您作为程序员的生活更轻松。

关注小编后续次序更新

本文章主要介绍的是,ElementTree类
从字符串和文件中解析
fromstring()函数
XML()函数
parse()函数
解析器对象
增量解析

ElementTree类
一个ElementTree的主要文档包裹一个树根节点。它提供了两种序列化和一般文档处理方法。

root = etree 。XML (’’’ \
… <?xml version =“1.0”?>
… <!DOCTYPE root SYSTEM“test”[<!ENTITY tasty“parsnips”>]>

… &tasty;
… </ root>
… ‘’’’ )

tree = etree 。ElementTree的(根)
打印(树。DOCINFO 。xml_version )
1.0

打印(树。DOCINFO 。DOCTYPE )
<!DOCTYPE根SYSTEM “测试”>

树。docinfo 。public_id = ’ - // W3C // DTD XHTML 1.0 Transitional // EN’
树。docinfo 。system_url = ‘文件://local.dtd
打印(树。DOCINFO 。DOCTYPE )
<DOCTYPE根PUBLIC “ - // W3C // DTD XHTML 1.0过渡// EN”“文件://local.dtd “>
一个ElementTree的也是你得到什么,当你调用 解析()函数来解析文件或类似文件的对象(见下面的分析部)。

其中一个重要区别是ElementTree类序列化为完整文档,而不是单个元素。这包括顶级处理说明和注释,以及文档中的DOCTYPE和其他DTD内容:

打印(etree 。的toString (树)) #LXML 1.3.4和后
<!DOCTYPE根PUBLIC “ - // W3C // DTD XHTML 1.0过渡// EN” “文件://local.dtd”[
< !ENTITY美味的“parsnips”>
]>

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()函数,但常用于XML文本写右到源:

root = etree 。XML (“<根>数据</根>” )
打印(根。标签)

etree 。tostring ࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值