引入xml模块
import xml.etree.cElementTree as ET
获取根节点
# data.xml
# xml.py
import xml.etree.cElementTree as ET
tree = ET.parse('data.xml')
root = tree.getroot()
print(root.tag)
# data
获取节点标签名、属性、文本值
tag |
标签名 |
attrib |
属性名 |
text |
文本值 |
# data.xml
日本人
GDP
美国人
好莱坞
# xml.py
import xml.etree.cElementTree as ET
tree = ET.parse('data.xml') # 拿到文本内容
root = tree.getroot() # 拿到根节点
for child in root:
for i in child:
print(i.text, i.attrib)
# 日本人
# {'id': '9001'}
# GDP
# {'value': '10'}
# 美国人
# {'id': '1001', 'money': 'much'}
# 好莱坞
# {}
iter遍历根节点下的某个标签
# xml
日本人
GDP
美国人
好莱坞
# py
import xml.etree.cElementTree as ET
tree = ET.parse('t.xml') # 拿到文本内容
root = tree.getroot() # 拿到根节点
for node in root.iter('people'):
print(node.tag, node.text)
# people 日本人
# people 美国人
文本、属性修改
import xml.etree.cElementTree as ET
tree = ET.parse('t.xml')
root = tree.getroot()
for people in root.iter('people'):
# 修改节点文本
people.text = people.text + '不是人'
# set修改文本属性
people.set('cute', 'no')
# 重写xml
tree.write('t.xml')
删除findall、find、remove
# xml
日本人
20
美国人
10
# py
import xml.etree.cElementTree as ET
tree = ET.parse('t.xml')
root = tree.getroot()
for country in root.findall('country'):
if int(country.find('gdp').text) < 15:
root.remove(country)
tree.write('t.xml')
用代码生成xml
import xml.etree.cElementTree as ET
# 生成根节点
tree = ET.Element('data')
stu = ET.SubElement(tree, 'students', attrib={'age': '19', 'class': '6'})
stu.text = '张小明'
stu1 = ET.SubElement(tree, 'students', attrib={'age': '18', 'class': '7'})
dog = ET.SubElement(stu1, 'dog', attrib={'color': 'yellow'})
et = ET.ElementTree(tree)
et.write('test.xml', encoding='utf-8')
# 生成的xml
张小明