python常用模块之xml模块

使用xml模块需先引入模块名:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.ElementTree as ET                       #ET是xml模块的别名

ET 模块可以归纳为三个部分:
1、ElementTree将整个XML文档表示为树,并 Element表示此树中的单个节点。与整个文档的交互(读取和写入文件)通常在ElementTree关卡上完成。
2、与单个XML元素及其子元素的交互在该Element级别上完成。
3、以及一些操作 XML 的函数。

可以使用 ET 模块的parse()函数来从指定的 XML 文件构造一个ElementTree对象:
# 获取 XML 文档对象 ElementTree
tree = ET.parse('test.xml')                   #   <xml.etree.ElementTree.ElementTree object at 0x00000000021CCA20>

# 获取 XML 文档对象的根结点 Element
root = tree.getroot()                        #  获取根节点 <Element 'data' at 0x0000000002110368>

# 打印根节点的名称;获取标签名
print(root.tag)                             # tag函数用来打印根节点名称
标签分自闭合标签和非自闭合标签:
<year>2008</year>                           非自闭合标签
<neighbor name="Austria" direction="E"/>    自闭合标签

例如:<APP_KEY channel = 'CSDN'> hello123456789 </APP_KEY>
tag 即标签,用于标识该元素表示哪种数据,即APP_KEY
attrib 即属性,用Dictionary形式保存,即{'channel' = 'CSDN'}
text 文本字符串,可以用来存储一些数据,即hello123456789

python常用模块之xml模块

data 是根节点
conuntry 是子节点;每个子节点有自己的标签、属性、文本字符串

python常用模块之xml模块

获取标签名:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root:
    for j in i:
        print(j.tag)
获取标签属性:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root:
    print(i.attrib)
获取子节点标签名:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root:
    for j in i:
        print(j.tag)
获取子节点属性:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root:
    for j in i:
        print(j.attrib)
获取子节点文本:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root:
    for j in i:
        print(j.text)
iter()函数指定过滤出某一个tag(标签):
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root.iter('year'):                       # 从“根”节点开始查找
    print(i.tag,i.text)

以上实例输出结果:
year 2008
year 2011
year 2011

set()函数新增属性
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.cElementTree as ET
tree=ET.parse('test')
root=tree.getroot()
for i in root.iter('year'):
    new_year=int(i.text)+1
    i.text=str(new_year)                         #更新文本信息
    i.set("updated","yes")                         # 更新/添加  属性

tree.write('abc.xml')                             #从新写入到新的文件中
del删除标签属性
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.ElementTree as ET
tree=ET.parse('abc.xml')
root=tree.getroot()
for i in root.iter('year'):
    del i.attrib['updated']
tree.write('abc.xml')
remove删除整个子节点
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import xml.etree.ElementTree as ET
tree=ET.parse('abc.xml')
root=tree.getroot()
for i in root.iter('country'):      #这里必须写子节点名称,因为下面的root.remove删除的时候会引用
    x=int(i.find('rank').text)
    if x>=50:
        root.remove(i)               #删除整个节点

tree.write('yedong.xml')

转载于:https://blog.51cto.com/2032872/2148946

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值