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從菜鳥到高手》,作者:李寧