python开发—教你如何使用lxml.etree

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

有关API的完整参考,请参阅生成的API文档。

内容

本文章主要介绍的是元素将属性作为dict和元素包含文本

元素将属性作为dict

XML元素支持属性。您可以直接在Element工厂中创建它们:

root = etree 。元素(“root” , 有趣= “完全” )
etree 。tostring (root )
b’’
属性只是无序的名称 - 值对,因此处理它们的一种非常方便的方法是通过Elements的类字典界面:

打印(根。获得(“有趣” ))
完全

打印(根。获得(“你好” ))

根。集(“你好” , “忽忽” )
打印(根。获得(“你好” ))
忽忽

etree 。tostring (root )
b’<root interesting =“完全”hello =“Huhu”/>’

排序(根。键())
[ ‘你好’, ‘有趣’]

为 名称, 值 中的 排序(根。项目()):
… 打印(’ %S = %R ’ % (名称, 值))
你好= ‘忽忽’
有趣= ‘完全’
对于您想要进行项目查找或有其他理由获取“真正的”类字典对象的情况,例如传递它,您可以使用attrib属性:

attributes = root 。ATTRIB
打印(属性[ “有趣” ])
完全

打印(属性,获得(“无此类属性” ))

属性[ “你好” ] = “Guten变量”
打印(属性[ “你好” ])
Guten标签

打印(根。获得(“你好” ))
Guten标签
请注意,attrib是一个由Element本身支持的类似dict的对象。这意味着元素的任何更改都会反映在属性中 ,反之亦然。这也意味着,XML树在内存中保持活着,只要ATTRIB其要素之一是在使用中。要获取不依赖于XML树的属性的独立快照,请将其复制到dict中:

d = 字典(根。ATTRIB )
排序(d 。项目())
[( ‘你好’, ‘Guten标签’),( ‘有趣’, ‘完全’)]

root = etree 。元素(“root” )
root 。text = “TEXT”
打印(根。文本)
TEXT

etree 。tostring (root )
b’ TEXT </ root>’
在许多XML文档(以数据为中心的文档)中,这是唯一可以找到文本的地方。它由树层次结构最底部的叶标记封装。

但是,如果XML用于标记文本文档(如(X)HTML),则文本也可以出现在树的中间的不同

python开发—教你如何使用lxml.etree
欢迎大家加入小编的技术交流全

元素之间:

< HTML > < 体>你好< BR />世界</ 身体> </ HTML >
这里,
标签被文本包围。这通常被称为 文档样式或混合内容 XML。Elements通过它们的tail属性来支持它 。它包含直接跟在元素后面的文本,直到XML树中的下一个元素:

html = etree 。元素(“html” )
body = etree 。SubElement (html , “body” )
body 。text = “TEXT”
etree 。tostring (html )
b’ TEXT </ body> </ html>’

br = etree 。子元素(正文, “br” )
etree 。tostring (html )
b’ TEXT
</ body> </ html>’

br 。tail = “TAIL”
etree 。tostring (html )
b’ TEXT
TAIL </ body> </ html>’
两个属性.text和.tail足以表示XML文档中的任何文本内容。这样,除了Element类之外,ElementTree API不需要任何特殊的文本节点,这些节点往往会相当频繁(正如您可能从经典DOMAPI中获知)。

但是,有些情况下尾部文本也会妨碍。例如,当您从树中序列化元素时,您并不总是希望在结果中使用尾部文本(尽管您仍然需要其子项的尾部文本)。为此, tostring()函数接受关键字参数with_tail:

etree 。tostring (br )
b’
TAIL’

etree 。tostring (br , with_tail = False ) #lxml.etree only!
B ‘

如果你想读的只有文字,即没有任何中间变量,你必须递归串联所有文字和尾部 以正确的顺序属性。同样,tostring()函数来拯救,这次使用method关键字:

etree 。tostring (html , method = “text” )
b’TEXTTAIL’
如果大家没有找到一个好的技术交流群或者需要关于python的资料的如1.爬虫库–requests,bs4,lxml,scrapy,pyspider2.python开发—Django,Tornado,flask框架3.linux,shell脚本4.selenium自动化测试5.自动化运维Zabbix6.数据库 MySql,NoSql,redis正则表达式re,网络编程,面向对象,lambda,IO并发编程,GUI图形

可以加入小编的群418775537

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值