XML模块

'''类似于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)    #打印生成的格式
 
原文地址:https://www.cnblogs.com/Finance-IT-gao/p/10501551.html