XML和json是常见的两种轻量级数据存储格式,Web和某些配置文件中经常用到二者:
本示例介绍简单的解析XML和json的过程,暂不涉及互转换等操作
XML和json的语法都很简单,此处不再赘述
示例用XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<family id="20200202">
<dad name="David">
<age>40</age>
<interest>football</interest>
</dad>
<mom name="Penny">
<age>39</age>
<interest>movie</interest>
</mom>
<apartment name="House_1">
<address>四川省天府三街1号</address>
<floor>15</floor>
</apartment>
<apartment name="House_2">
<address>四川省天府三街2号</address>
<floor>20</floor>
</apartment>
</family>
解析程序:
# - Tutorial 14
# - 2020-2-10
# - Johan
# - 题目:
# 1、打开XML文件,读取内容
# 2、读取JSON字符串内容
"""
关键实现:
1、DOM库的使用
2、json库的使用
3、字典类型
"""
# DOM方式解析XML
from xml.dom.minidom import parse
import xml.dom.minidom
# 解析json的库
import json
#################### 解析XML内容 ######################
dom_tree = xml.dom.minidom.parse('xmldemo.xml')
family = dom_tree.documentElement # 根元素
if family.hasAttribute('id'):
print('Family id : %s' % family.getAttribute('id'))
apartments = family.getElementsByTagName('apartment') # 获取所有apartment元素
for apartment in apartments:
id = apartment.getAttribute('name')
address = apartment.getElementsByTagName('address')[0].childNodes[0].data
floor = apartment.getElementsByTagName('floor')[0].childNodes[0].data
print('[%s]%s%s楼' % (id, address, floor))
# 同理,获取其他元素内容
dic = {'football': '足球', 'movie': '电影'}
print('成员:')
dad = family.getElementsByTagName('dad')
mom = family.getElementsByTagName('mom')
print('父亲:%s[%s岁] 兴趣:%s' %
(dad[0].getAttribute('name'),
dad[0].getElementsByTagName('age')[0].childNodes[0].data,
dic[dad[0].getElementsByTagName('interest')[0].childNodes[0].data]))
print('母亲:%s[%s岁] 兴趣:%s' %
(mom[0].getAttribute('name'),
mom[0].getElementsByTagName('age')[0].childNodes[0].data,
dic[mom[0].getElementsByTagName('interest')[0].childNodes[0].data]))
################### 解析json #######################
json_text = '{"name": "文明6", "文件大小": "9G", "最低内存": "4G"}'
content = json.loads(json_text)
print('%s %s %s' % (content['name'], content['文件大小'], content['最低内存']))
运行结果:
如果把上面的XML文件写成json格式,会得到一个更短更轻巧的文件,也能看出json是相比之下更轻量级的格式
XML优势在于数据的树状结构明显,从属关系清晰,基本能一目了然,json则着重考虑轻量化数据存储