在用python写脚本时,通常需要处理xml格式的文件或字符串。由于json格式处理的方便性, 我们可将其转为json格式进行处理。
虽然与xml相互转换的是dict,但我们可以以使用json模块的json.dumps()
方法来进行转换
xml与json互转 demo :
#-*-coding:utf-8-*-
import xmltodict
import json
import os
import sys
def jsonToXML(json_str):
'''传入字典字符串或字典,返回xml字符串'''
xml_str = ''
if type(json_str) == dict:
dic = json_str
else:
dic = json.loads(json_str)
try:
xml_str = xmltodict.unparse(dic, encoding='utf-8') # 示例字典字符串下这段代码会报错
except Exception as e:
xml_str = xmltodict.unparse({'request': dic}, encoding='utf-8') # request可根据需求修改,目的是为XML字符串提供顶层标签
finally:
return xml_str
def xmlToJson(xml_str):
'''传入xml字符串,返回字典'''
dic = xmltodict.parse(xml_str, encoding='utf-8')
dic = json.dumps(dic,ensure_ascii=False,indent=4)
return dic
if __name__ == '__main__':
s = """<POQ>
<PH01>
<PH010R01>2020-10-16</PH010R01>
<PH010D01>1</PH010D01>
<PH010Q02>孙悟空</PH010Q02>
<PH010Q03>02</PH010Q03>
</PH01>
<PH01>
<PH010R01>2020-10-15</PH010R01>
<PH010D01>2</PH010D01>
<PH010Q02>猪八戒</PH010Q02>
<PH010Q03>02</PH010Q03>
</PH01>
<PH01>
<PH010R01>2020-10-14</PH010R01>
<PH010D01>3</PH010D01>
<PH010Q02>唐僧</PH010Q02>
<PH010Q03>02</PH010Q03>
</PH01>
</POQ>
"""
result = xmlToJson(s)
print(result)
result = jsonToXML(result)
print(result)
执行demo 输出:
C:\Users\admin>python xml2json.py
{
"POQ": {
"PH01": [
{
"PH010R01": "2020-10-16",
"PH010D01": "1",
"PH010Q02": "孙悟空",
"PH010Q03": "02"
},
{
"PH010R01": "2020-10-15",
"PH010D01": "2",
"PH010Q02": "猪八戒",
"PH010Q03": "02"
},
{
"PH010R01": "2020-10-14",
"PH010D01": "3",
"PH010Q02": "唐僧",
"PH010Q03": "02"
}
]
}
}
<?xml version="1.0" encoding="utf-8"?>
<POQ><PH01><PH010R01>2020-10-16</PH010R01><PH010D01>1</PH010D01><PH010Q02>孙悟空</PH010Q02><PH010Q03>02</PH010Q03></PH01><PH01><PH010R01>2020-10-15</PH010R01><PH010D01>2</PH010D01><PH010Q02>猪八戒</PH010Q02><PH010Q03>02</PH010Q03></PH01><PH01><PH010R01>2020-10-14</PH010R01><PH010D01>3</PH010D01><PH010Q02>唐僧</PH010Q02><PH010Q03>02</PH010Q03></PH01></POQ>