XML文件已被广泛使用在各种应用中,如Web、移动APP、桌面GUI应用等等,几乎都会有XML文件的身影。不过现在一般不会将大部分的应用数据用xml文件存储,但至少会使用XML文件保存一些配置信息。在Python中,需要导入XML模块或其子模块,并利用提供的API来操作XML文件。如,xml.etree.ElementTree模块,通过该模块的parse函数读取XML文件。由于下面XML操作都需要用到XML文件,文件如下:
persons.xml文件的内容:<?xml version="1.0" ?><persons>
<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>
以下介绍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('-----------------')
二、字典转成XML字符串
import 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()
三、XML字符串转为python字典
import 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)
参考文献:1、《python从菜鸟到高手》,作者:李宁
Python——数据存储:XML操作
点赞
收藏