Python——数据存储:XML操作

1  XML文件已被广泛使用在各种应用中,如Web、移动APP、桌面GUI应用等等,几乎都会有XML文件的身影。不过现在一般不会将大部分的应用数据用xml文件存储,但至少会使用XML文件保存一些配置信息。在Python中,需要导入XML模块或其子模块,并利用提供的API来操作XML文件。如,xml.etree.ElementTree模块,通过该模块的parse函数读取XML文件。由于下面XML操作都需要用到XML文件,文件如下: 2 3persons.xml文件的内容:<?xml version="1.0" ?><persons> 4 5 <item type="int">20</item> <item type="str">names</item> <item type="dict" uuid="123"> <salary type="int">2000</salary> <age type="int">30</age> <name type="str">Gell</name> </item> <item type="dict" uuid="45"> <salary type="int">3000</salary> <age type="int">40</age> <name type="str">Chen</name> </item> <item type="dict" uuid="167"> <salary type="int">4000</salary> <age type="int">50</age> <name type="str">Ling</name> </item></persons> 6 7以下介绍python语言对XML文件的具体操作。一、读取与检索XML文件from xml.etree.ElementTree import parsedoc = parse('./files/persons.xml')for item in doc.iterfind('item'): # 读取id节点的值 salary = item.findtext('salary') # 读取name节点的值 age = item.findtext('age') # 读取price节点的值 name = item.findtext('name') type = item.get('type') uuid = item.get('uuid') print('type={}'.format(type)) print('uuid={}'.format(uuid)) print('salary={}'.format(salary)) print('age', '=', age) print('name', '=', name) print('-----------------') 8 9二、字典转成XML字符串 10 11import dicttoxmlfrom xml.dom.minidom import parseStringimport osd = [20,'names', {'name':'Gell','age':30,'salary':2000}, {'name':'Chen','age':40,'salary':3000}, {'name':'Ling','age':50,'salary':4000} ]bxml = dicttoxml.dicttoxml(d,custom_root='persons')xml = bxml.decode('utf-8')print(xml)print('----------------------')dom = parseString(xml)prettyxml = dom.toprettyxml(indent=' ')print(prettyxml)#将XML字符串保存到文件中。os.makedirs('files',exist_ok=True)f=open('files/persons.xml','w',encoding='utf-8')f.write(prettyxml)f.close() 12 13三、XML字符串转为python字典 14 15import xmltodictimport pprintf=open('./files/persons.xml','rt',encoding='utf-8')xml = f.read()d=xmltodict.parse(xml)print(d)f.close()pp = pprint.PrettyPrinter(indent=0)pp.pprint(d) 16 17 参考文献:1、《python从菜鸟到高手》,作者:李宁
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''