Python——数据存储:XML操作

  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 parse

doc = 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 dicttoxml
from xml.dom.minidom import parseString
import os

d = [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 xmltodict
import pprint

f=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从菜鸟到高手》,作者:李宁

转载于:https://www.cnblogs.com/chenhaiming/p/9881819.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值