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) #打印生成的格式
posted @ 2017-06-18 18:08  不知所以  阅读(80)  评论(0)    收藏  举报