Python基础-----xml模块

1、xml模块介绍及用法
  xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。
  xml的格式通过<>节点来区别数据结构的
import xml.etree.ElementTree as ET

tree = ET.parse("xml_temp.xml")       #parse()解析   对xml文件进行解析
root = tree.getroot()                  #getroot()获取 xml文件的根节点,该例为 <data>
print(root.tag)                          #.tag 获取xml文件的根节点标签名,该例为 data

遍历xml文档
for child in root:                    #遍历根节点下的子节点
    print(child.tag, child.attrib)  #遍历打印出子节点下的.tag标签名和.attrib属性(以字典键值对形式)
                                    #  count  {'name':'Liechtenstein'}
    for i in child:                    #遍历子节点下的子元素(rank  year  gdppc  neighbor)
        print(i.tag,i.text)            #遍历打印出子节点下的子元素.tag标签名和.text值,没有则返回None
                                    #rank 2
#只遍历year 节点
for node in root.iter('year'):        #root.iter('year')获取到根(data)下的所有'year'节点标签进行遍历
    print(node.tag,node.text)         #遍历打印出'year'标签的标签名和值(text)   year 2008
#修改
for node in root.iter('year'):
new_year = int(node.text) + 2 #对所有的'year'节点标签的值年份值修改 +2
node.text = str(new_year)
node.set("updated","yes") #属性修改,对所有的'year'节点标签增加一个‘updated’属性,并赋值为'yes'
tree.write("xmltest.xml") #写入文本,修改才会生效(名字可以重复,重复即覆盖)

#删除node
for country in root.findall('country'): #root.findall('country')查找data下的所有country
rank = int(country.find('rank').text) #country.find('rank').text查找country节点下'rank'标签的值
if rank > 50: #'rank'标签的值>50
root.remove(country) # 则删除这个country的整体信息
tree.write('output.xml')
 

2、创建xml文档

import xml.etree.ElementTree as ET

new_xml = ET.Element("namelist")                                    #创建根节点(标签)
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})      #在上述根节点下创建子节点'name',
                                                                    # 并添加"enrolled"属性和值"yes"
age = ET.SubElement(name,"age",attrib={"checked":"no"})             #在'name'标签下创建子节点'age',并添加属性和值
sex = ET.SubElement(name,"sex")
sex.text = '33'                                                     #对'name'标签下创建的子节点'sex'添加值
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text = '19'
 
et = ET.ElementTree(new_xml)                                        #生成文档树(必不可少)
et.write("test.xml", encoding="utf-8",xml_declaration=True)         #写入内容(必不可少)
 
ET.dump(new_xml) #打印生成的格式

 

posted @ 2018-10-03 23:49  Meanwey  阅读(173)  评论(0编辑  收藏  举报