码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础-----xml模块

时间:2018-10-04 11:42:04      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:update   打印   roo   覆盖   重复   findall   country   结构   font   

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) #打印生成的格式

 

Python基础-----xml模块

标签:update   打印   roo   覆盖   重复   findall   country   结构   font   

原文地址:https://www.cnblogs.com/Meanwey/p/9741330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!