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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章