使用python操作XML增删改查
什么是XML?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
参考文献
导入模块
import xml.etree.ElementTree as ET
读取解析XML
可以从xml文件、字符串中解析
新建一个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>张三</name>
<age>18</age>
<score>89</score>
</student>
<student>
<name>李四</name>
<age>19</age>
<score>81</score>
</student>
<student>
<name>王五</name>
<age>17</age>
<score>92</score>
</student>
</students>
从xml文件中读取,使用getroot()获取根节点,得到的是一个Element对象
tree = ET.parse('students.xml')
root = tree.getroot()
从字符串变量中读取,返回的是Element对象
root = ET.fromstring(country_data_as_string)
访问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()
for student in root.iter('student'):
print student[0].text
out:
张三
李四
王五
2、Element.findall()
for element in root.findall('student'):
name = element.find('name').text
age = element.find('age').text
score = element.find('score').text
print name,age,score
out:
张三 18 89
李四 19 81
王五 17 92
修改XML
- ElementTree.write()将构建的XML文档写入文件。
- Element.text = '' 直接改变字段内容
- Element.append(Element) 为当前的Elment对象添加子对象
- Element.remove(Element) 删除Element节点
- Element.set(key, value) 添加和修改属性
- ElementTree.write('filename.xml') 写出(更新)XMl文件
创建XML
- ElementTree.Element() 构建一个节点
- ElementTree.SubElement(Element,tag) 构建一个子节点
a = ET.Element('a')
b = ET.SubElement(a, 'b')
c = ET.SubElement(a, 'c')
print ET.dump(a)
out:
<a><b /><c /></a>
总结
最近写东西需要都输出xml,所以学习了XML以及XML在python的使用。更多内容可以看官方文档。