'''类似于data、country、rank、year、GDP这样前后都有的,叫标签tag 类似于name="america"、updated="yes"这样跟在标签后面,在尖括号里面的叫属性 类似于2、2008、15222这样跟在尖括号外面的叫文本text'''
1 import xml.etree.ElementTree as ET2 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为yestree.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) #打印生成的格式