# xml文件
<data>
<people name="liubein">
<age must="yes">22</age>
<sex>man</sex>
<job name="emperor"/>
</people>
<people name="guanyu">
<age>21</age>
<sex>man</sex>
<job name="General1"/>
</people>
<people name="zhangfei">
<age>20</age>
<sex>man</sex>
<job name="General2"/>
</people>
</data>
import xml.etree.ElementTree as ET
tree = ET.parse("xmlTest.xml")
root = tree.getroot()
print(root.tag)
# 遍历xml文档
for child in root:
# tag标签名称, 标签attrib 属性, text标签包含文本内容
print(child.tag, child.attrib)
for i in child:
print(i.tag, i.text)
# 只遍历某个节点
for node in root.iter("age"):
print(node.tag, node.text, node.attrib)
# 修改
for node in root.iter('age'):
new_age = int(node.text)+1
node.text = str(new_age)
# <age>20</age> 变成 <age updated="yes">21</age>
# 会在<age>标签中加上 updated="yes"属性
node.set("updated","yes")
# 将修改的内容写到文件中
tree.write("new.xml")
# 删除某个节点
for node in root.findall("people"):
temp = int(node.find("age").text)
if temp<21:
root.remove(node)
# 将删除后的内容保存到文件中
tree.write("new.xml")
创建xml文件
import xml.etree.ElementTree as ET
new = ET.Element("Food") # 生成xml对象
fruit = ET.SubElement(new, "Fruit", attrib={"name":"watermelon"})
w = ET.SubElement(fruit, "weight")
w.text = "50"
c = ET.SubElement(fruit,"color")
c.text = "blue"
fruit = ET.SubElement(new, "Fruit", attrib={"name":"apple"})
w = ET.SubElement(fruit, "weight")
w.text = "20"
c = ET.SubElement(fruit,"color")
c.text = "red"
et = ET.ElementTree(new) # 生成文档对象
et.write("test.xml", encoding="utf-8", xml_declaration=True)
生成的xml文件如下:
<?xml version='1.0' encoding='utf-8'?>
<Food>
<Fruit name="watermelon">
<weight>50</weight>
<color>blue</color>
</Fruit>
<Fruit name="apple">
<weight>20</weight>
<color>red</color>
</Fruit>
</Food>