day5-xml
xml模块
1. xml格式
1 <?xml version="1.0"?> 2 <data> 3 <country name="Liechtenstein"> 4 <rank updated="yes">2</rank> 5 <year>2008</year> 6 <gdppc>141100</gdppc> 7 <neighbor name="Austria" direction="E"/> 8 <neighbor name="Switzerland" direction="W"/> 9 </country> 10 <country name="Singapore"> 11 <rank updated="yes">5</rank> 12 <year>2011</year> 13 <gdppc>59900</gdppc> 14 <neighbor name="Malaysia" direction="N"/> 15 </country> 16 <country name="Panama"> 17 <rank updated="yes">69</rank> 18 <year>2011</year> 19 <gdppc>13600</gdppc> 20 <neighbor name="Costa Rica" direction="W"/> 21 <neighbor name="Colombia" direction="E"/> 22 </country> 23 </data>
2. 查询
1 import xml.etree.ElementTree as ET 2 3 tree = ET.parse("xmltest.xml") 4 # 获取根节点 5 root = tree.getroot() 6 # 打印节点名称 7 print(root.tag) 8 9 # 遍历xml文档 10 for child in root: 11 # 打印子节点名称和子节点属性 12 print(child.tag, child.attrib) 13 # 遍历子节点 14 for i in child: 15 print(i.tag,i.text) 16 17 # 只遍历year节点 18 for node in root.iter('year'): 19 print(node.tag,node.text)
3. 修改
1 import xml.etree.ElementTree as ET 2 3 tree = ET.parse("xmltest.xml") 4 # 获取根节点 5 root = tree.getroot() 6 7 # 修改year节点的值 8 for node in root.iter('year'): 9 new_year = int(node.text) + 1 10 node.text = str(new_year) 11 node.tag = 'myyear' 12 # 增加属性 13 node.set("updated","yes") 14 15 # 修改完成后,重新写入xml文件 16 # 可以写入新文件 17 tree.write("xmltest.xml")
4. 删除
1 import xml.etree.ElementTree as ET 2 3 tree = ET.parse("xmltest.xml") 4 # 获取根节点 5 root = tree.getroot() 6 7 # 删除node 8 for country in root.findall('country'): 9 rank = int(country.find('rank').text) 10 if rank > 50: 11 # 删除子节点 12 root.remove(country) 13 14 # 重新写入文件 15 tree.write('output.xml')
5. 新建
1 # 创建xml文档 2 import xml.etree.ElementTree as ET 3 4 # 设置根节点为namelist 5 new_xml = ET.Element("namelist") 6 7 # 创建父节点为new_xml的子节点name 8 name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"}) 9 10 age = ET.SubElement(name,"age",attrib={"checked":"no"}) 11 sex = ET.SubElement(name,"sex") 12 age.text = '33' 13 sex.text = 'man' 14 15 name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"}) 16 age = ET.SubElement(name2,"age") 17 age.text = '19' 18 19 et = ET.ElementTree(new_xml) #生成文档对象 20 et.write("test.xml", encoding="utf-8",xml_declaration=True) 21 22 ET.dump(new_xml) #打印生成的格式

浙公网安备 33010602011771号