'''类似于data、country、rank、year、GDP这样前后都有的,叫标签tag
类似于name="america"、updated="yes"这样跟在标签后面,在尖括号里面的叫属性
类似于2、2008、15222这样跟在尖括号外面的叫文本text'''
1 import xml.etree.ElementTree as ET
2 tree = ET.parse('xml_1') #解析(parse)XML_test中的数据
3 root = tree.getroot()
4 print(root.tag) #拿到根的标签(tag),即data
遍历xml文档:
for child in root:
print(child.tag,child.attrib) #打印子目录的标签和属性(attribute)
for i in child:
print(i.tag,i.text) #打印孙目录的标签和文本text
修改:
for node in root.iter('year'):
new_year = int(node.text) + 1 #年份加1
node.text = str(new_year)
node.set('updated','yes') #设置属性updated为yes
tree.write('xml_2.xml') #不能直接修改原文件,重写到xml_2.xml
移除排名10以后的国家:
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank >10:
root.remove(country)
tree.write('xml_3.xml')
自己创建一个xml文件:
1 import xml.etree.ElementTree as ET
2 new_xml = ET.Element('namelist') #创建一个namelist单元
3 name = ET.SubElement(new_xml,'name',attrib={'enrolled':'yes'}) #在new_xml下创建子单元name
4 age = ET.SubElement(name,'age',attrib={'checked':'no'}) #在name下创建子单元age
5 sex =ET.SubElement(name,'sex') #在name下创建子单元sex
6 age.text = '33' #设置age的文本值
7 sex.text = 'M' #设置sex的文本值
8
9 name2 = ET.SubElement(new_xml,'name2',attrib={'enrolled':'no'})
10 age = ET.SubElement(name2,'age')
11 age.text = '19'
12
13 et =ET.ElementTree(new_xml) #生成文档对象
14 et.write('test.xml',encoding='utf-8',xml_declaration=True) #将其写入.xml文件
15 ET.dump(new_xml) #打印生成的格式