首页 > 技术文章 > python3读取xml为dict(json)格式(xmltodict)

zhangquan-yw 2020-11-04 13:07 原文

python3读取xml为dict(json)格式(xmltodict)

制作人:全心全意

xmltodict

github地址:https://github.com/martinblech/xmltodict

安装:

pip3 install xmltodict

  

示例代码如下:(xml中仅有1个KeyVal)

123.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyVals>
<KeyVal>
	<para_id>000048EA</para_id>
<key_name><id>8</id><attribute>gufen_source</attribute><name>股份来源</name></key_name>
<key_value>公司从二级市场回购的本公司A股普通股股票</key_value>
<offset>78</offset><org_para_text>四、本激励计划采取的激励形式为限制性股票。股票来源为公司从二级市场回购的本公司 A 股普通股股票。</org_para_text>
<rule_used>131</rule_used>
</KeyVal>


</KeyVals>

  

go.py

import xmltodict

with open("123.xml",encoding="utf-8") as fd:
    dict = xmltodict.parse(fd.read())
res = []
rest = {}
rest['filename'] = filename
rest['name'] = dict['KeyVals']['KeyVal']['key_name']['name']
rest['key_value'] = dict['KeyVals']['KeyVal']['key_value']
rest['org_para_text'] = dict['KeyVals']['KeyVal']['org_para_text']
res.append(rest)

print(res)

  

 

示例代码如下:(xml中仅有多个KeyVal)

123.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyVals>
<KeyVal>
	<para_id>000048EA</para_id>
<key_name><id>8</id><attribute>gufen_source</attribute><name>股份来源</name></key_name>
<key_value>公司从二级市场回购的本公司A股普通股股票</key_value>
<offset>78</offset><org_para_text>四、本激励计划采取的激励形式为限制性股票。股票来源为公司从二级市场回购的本公司 A 股普通股股票。</org_para_text>
<rule_used>131</rule_used>
</KeyVal>

<KeyVal>
	<para_id>00004C07</para_id>
<key_name><id>7</id><attribute>shouyu_total</attribute><name>授予总量</name></key_name>
<key_value>3 , 926.70万股</key_value>
<offset>45</offset><org_para_text>五、本激励计划拟向激励对象授予3,926.70万股限制性 A 股普通股股票,占公司董事会审议通过本计划时公司股本总额399,088.02万股的0.9839%。本计划中任何一名激励对象所获授限制性股票数量未超过本计划提交股东大会审议之前公司股本总额的1.00%。</org_para_text>
<rule_used>121</rule_used>
</KeyVal>
</KeyVals>

  

go.py

import xmltodict

with open("123.xml",encoding="utf-8") as fd:
	dict = xmltodict.parse(fd.read())

res = []
for kvs in dict['KeyVals']['KeyVal']:	#若仅有1个KeyVal返回的是String,只能通过示例1进行调用
	rest = {}
	rest['filename'] = filename
	rest['name'] = kvs['key_name']['name']
	rest['key_value'] = kvs['key_value']
	rest['org_para_text']=kvs['org_para_text']
	res.append(rest)

print(res)

  

推荐阅读