Python3 xml解析模块xml.etree.ElementTree之Element

Element是xml解析模块xml.etree.ElementTree的类,表示xml中的一个元素。

初始化

Element(tag, attrib={}, **extra)

 tag:元素名。

attrib:元素属性字典,如果传入的不是字典则会产生TypeError。

extra:以关键字参数传递的额外参数,可传入多个。会覆盖attrib中相同键的值。

字段

Element包含四个可直接访问的字段:

<tag attrib>text<child/>...</tag>tail

tag:元素名。

attrib:元素属性字典。

text:第一个子元素之前的文本。返回结果要么是字符串,要么是None值。如果没有文本,则返回结果是空字符串还是None取决于解析器。

tail:元素结束标签之后,下一个兄弟节点开始标签之前的文本。返回结果要么是字符串,要么是None值。如果没有文本,则返回结果是空字符串还是None取决于解析器。

函数

makeelement(tag, attrib):创建与此元素类型相同的新Element对象。tag为元素名。attrib为元素属性字典。

append(subelement):将subelement添加到Element内部子元素列表的末尾。subelement必须是Element类实例,否则会产生TypeError。

extend(elements):Python3.2新增,将elements添加到Element内部子元素列表的末尾。elements为0到多个Element类实例序列,否则会产生TypeError。

insert(index,subelement):将subelement添加到Element内部子元素列表的指定索引处。subelement必须是Element类实例,否则会产生TypeError。index为要插入subelement的索引位置。

remove(subelement):删除匹配的子元素。此函数比较的是内存地址而不是tag值和元素内容。如果找不到匹配的元素,则会产生ValueError。

getchildren:返回所有直接子元素,Python3.2起弃用,使用list(ele)或迭代替代。

getiterator(tag=None):Python3.2起弃用,使用iter函数替代。

find(path, namespaces=None):查找并返回第一个匹配的元素,如果未找到则返回None。path为标签名或xpath字符串。namespaces是一个命名空间前缀到全名的映射的字典,默认为None。此函数实际上是调用的ElementPath的find方法。

findall(path, namespaces=None):查找并返回包含所有匹配元素的列表,如果没有匹配元素则返回空列表。path为标签名或xpath字符串。namespaces是一个命名空间前缀到全名的映射的字典,默认为None。此函数实际上是调用的ElementPath的findall方法。

iterfind(path, namespaces=None):Python3.2新增,与findall功能相同,只不过返回的是generator实例而不是列表。此函数实际上是调用的ElementPath的iterfind方法。

findtext(path, default=None, namespaces=None):查找并返回第一个匹配的元素的文本。path为标签名或xpath字符串。default为当找不到path指定的元素时返回的默认文本,namespaces是一个命名空间前缀到全名的映射的字典,默认为None。此函数实际上是调用的ElementPath的findtext方法。

clear:重置元素。删除所有子元素,元素属性字典,text和tail字段设置为None。

get(key, default=None):获取元素属性。key为要查找的属性名,default为可选的,要查找的属性不存在时的默认返回值,默认为None。

set(key, value):设置元素属性。key为要设置的属性名。value为要设置的属性值。

keys:获取元素属性名列表。

items:返回包含元素属性的(名称、值)元组的列表。

iter(tag=None):Python3.2新增,创建并返回一个以当前元素为根的树迭代器。迭代器按文档顺序遍历这个元素和它下面的所有元素。如果tag不为None或“*”,则迭代器只返回名称与tag相同的元素。如果在迭代期间树结构发生变化,则可能包含也可能不包含新增或删除的元素。要获得一个稳定的集合,可以在迭代器上使用list()函数,并循环得到的列表。

itertext:Python3.2新增,创建并返回一个文本迭代器。按文档顺序循环元素和所有子元素,并返回他们的内部文本。

魔术方法

__len__:返回元素大小,元素的大小为元素的子元素数量。

__bool__:判断元素是否为空,目前的判断依据是子元素数量不为零。所以如果想要判断元素是否存在需使用is None判断。

__getitem__(index):获取指定位置的子元素。

__setitem__(index,element):将指定位置设置为element,element必须是Element类实例。

__delitem__(index):删除指定位置的子元素。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值