天天看点

python学习(二) ElementTree解析、读写、创建xml文件python学习(二) 读写xml文件

python学习(二) 读写xml文件

1.xml格式

python学习(二) ElementTree解析、读写、创建xml文件python学习(二) 读写xml文件

将其存储为sample.xml 

Tag:使用<>包围的部分 

Element:被Tag包围的部分,例如22中的22 

Attribute:在Tag中可能存在的name/value对,如'name':'Blue'

2.解析XML

以下都是使用ElementTree处理XML 

from xml.etree import ElementTree as ET

(1)ElementTree中类对象

xml是一种层级化的数据结构,可以使用树状结构表示 

ElementTree:表示整个xml层级结构 

Element:表示树形结构中的父节点 

SubElement:表示树形结构中的所有子节点,有些节点既可以是父节点,也可以是子节点 

例如:上图中.......部分

(2)读xml文件数据

读入根节点方法(一)

# tree就是一个ElementTree对象 

tree = ET.parse(sample.xml) 

#root是根节点即上图中的 

root = tree.getroot()

读入根节点方法(二)

data = open("sample.xml").read() 

root = ET.fromstring(data)

(3)解析xml文件数据

ElementTree中类对象的值

tag:对应xml文件Tag部分,以字符串结构存储,例如'lab','person' 

attrib:对应xml文件Attribute部分,以字典结构存储,例如{'name':'Blue'} 

text:对应xml文件Elment部分,以字符串结构存储,例如22中'22'

解析xml文件

#使用for...in...遍历数据 

from xml.etree import ElementTree as ET 

tree = ET.parse('G:/xml/sample.xml') 

#获取根节点 

root = tree.getroot() 

for person in root: 

print(person.tag, person.attrib) 

for data in person: 

print(data.tag, data.text) 

输出: 

/>>>person {'name': 'Blue'} 

/>>>age 22 

/>>>gender male 

/>>>person {'name': 'Yellow'} 

/>>>age 20 

/>>>gender female

3.创建xml文件

from xml.etree import ElementTree as ET 

#首先创建根节点 

root = ET.Element('lab') 

#添加子节点SubElement(父节点Element对象, Tag字符串格式, Attribute字典格式) 

person1 = ET.SubElement(root, 'person', {'name':'Blue'}) 

#添加子节点 

age1 = ET.SubElement(person1, 'age') 

#添加text,即22,字符串格式 

age1.text = '22' 

gender1 = ET.SubElement(person1, 'gender') 

gender1.text = 'male' 

person2 = ET.SubElement(root, 'person', {'name':'Yellow'}) 

age2 = ET.SubElement(person2, 'age') 

age2.text = '20' 

gender2 = ET.SubElement(person2, 'gender') 

gender2.text = 'female' 

#将根目录转化为xml树状结构(即ElementTree对象) 

tree = ET.ElementTree(root) 

#在终端显示整个xml内容 

ET.dump(root) 

#写入xml文件 

tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)

4.向xml文件添加内容

#可以使用append方法添加子节点 

tree = ET.parse('G:/pythonStudy/xml/sample.xml') 

root = tree.getroot() 

#创建新的子节点 

person3 = ET.Element('person', {'name':'Brown'}) 

age3 = ET.SubElement(person3, 'age') 

age3.text = '20' 

gender3 = ET.SubElement(person3, 'gender') 

gender3.text = 'male' 

#向根节点添加新的子节点 

root.append(person3) 

#写入 

tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)

5.修改xml文件中的内容

tree = ET.parse('G:/pythonStudy/xml/sample.xml') 

root = tree.getroot() 

#查找root根节点下面的所有Tag为‘person’的节点 

person = root.findall('person') 

#删除第一个person子节点 

root.remove(person[0]) 

#新增或修改attitude 

person[1].set('name', 'White') 

#新增子节点 

root.append(childElement) 

#修改text直接访问即可 

person[2].text = '25'

附本文的创建例程和VOC标签格式xml文件的解析和添加标签例程

https://github.com/A-mockingbird/Practice