使用python操作XML
一、什么是XML?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
二、读取xml
2.1.导入模块
import xml.etree.ElementTree as ET
2.2.读取解析XML
可以从xml文件、字符串中解析,新建一个xml文件
<?xml version="1.0" encoding="UTF-8"?> <students> <student> <name>张三</name> <age>69</age> <sex>男</sex> </student> <student> <name>闫芳</name> <age>50</age> <sex>女</sex> </student> <student> <name>雷雷</name> <age>43</age> <sex>男</sex> </student> </students>
2.3.从xml文件中读取
使用getroot()获取根节点,得到的是一个Element对象
tree = ET.parse('students.xml') root = tree.getroot()
2.4.访问XML
每个Element都有以下属性
#tag = element.text #访问Element标签 #attrib = element.attrib #访问Element属性 #text = element.text #访问Element文本 for element in root.findall('student'): tag = element.tag #访问Element标签 attrib = element.attrib #访问Element属性 text = element.find('name').text #访问Element文本 print(tag, attrib, text) print(root[0][0].text) #子节点是嵌套的,我们可以通过索引访问特定的子节点
三、查找元素
Element 提供了一些方法来帮助我们对他的子节点进行遍历
1、Element.iter()
import xml.etree.ElementTree as ET #从xml文件中读取,使用getroot()方法获取根节点,得到的是一个element对象 tree = ET.parse('test.xml') root = tree.getroot() #iter将获取回来的多个元素对象放在列表中 for student in root.iter('student'): #每一个student元素下面有多个标签,这里0代表第一个标签的下标 print(student[0].text)
2、Element.findall()
import xml.etree.ElementTree as ET #从xml文件中读取,使用getroot()方法获取根节点,得到的是一个element对象 tree = ET.parse('test.xml') root = tree.getroot() #取出所有的student标签 for element in root.findall('student'): #输出每个student标签中的子标签文本信息 name = element.find('name').text age = element.find('age').text score = element.find('sex').text print(name, age, score)
四、创建XML
from xml.etree.ElementTree import Element, SubElement, ElementTree #开始构建 xml 树 # 生成根节点 root = Element('html') # 生成第一个子节点 head head = SubElement(root, 'head') # head 节点的子节点 title = SubElement(head, 'title') title.text = 'Well Augus!' # 生成 root 的第二个子节点 body body = SubElement(root, 'body') # body 的内容 body.text = 'I love Augus!' #得到了一个 xml 树的对象 tree 以及它的根节点的对象 root tree = ElementTree(root) # 生成xml文件 tree.write('result.xml', encoding='utf-8')
修改XML
- ElementTree.write()将构建的XML文档写入文件。
- Element.text = '' 直接改变字段内容
- Element.append(Element) 为当前的Elment对象添加子对象
- Element.remove(Element) 删除Element节点
- Element.set(key, value) 添加和修改属性
- ElementTree.write('filename.xml') 写出(更新)XMl文件
import xml.etree.ElementTree as ET tree = ET.parse("test.xml") root = tree.getroot() sub1 = root.findall('student/name') # 找到student下的子标签name for one in sub1: one.text = "阿萨斯" # 修改标签内 tree.write("test5.xml", encoding="UTF-8") # 保存修改

浙公网安备 33010602011771号