Python环境下xml与json互转

在用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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值