python中JSON转XML文件

python中JSON转XML文件

# 接收前台给的json数据
jsonData = json.loads(request.POST.get("jsonData"));
# 接收前台的类型(根据类型转出3个不同的文件)
type = json.loads(request.POST.get("type"));
# 最后转出的xml数据
xmlData = None
#判断类型
if type == 1:
    # 设置xml结构json
    xmlData = {
        "rootNodeXml":{                # xml根节点
            "childNodeXml":jsonData    # rootNodeXml的多个子节点childNodeXml jsonData中的数据是childNodeXml的子节点
        }
    }
elif type == 2:
    # 设置xml结构json
    xmlData = {
        "rootNodeXml":{                                       # 根节点
            "configureNode":jsonData["configureNode"]         # 子节点
            "informationNode":jsonData["informationNode"]     # 子节点
        }
    } 
elif type == 3:
    # 设置xml结构json
    xmlData = {
        "rootNodeXml":{                                   # 根节点
            "information":jsonData["information"]         # 子节点
            "configure":jsonData["configure"]             # 子节点
            "data":jsonData["data"]                       # 子节点
            "other":jsonData["other"]                     # 子节点
        }
    } 
if xmlData:
    # unpares需要引入                                                 pretty 格式化XML
    xmlData = unpares(xmlData, full_document=False, encoding="utf-8", pretty=True)
    print(xmlData)
    # 将值给输入到文件就可以

1.type是1时输入josn

"jsonData" = [
    {"name":"李敏","age":12},
    {"name":"李明","age":18},
    {"name":"小红","age":11},
    {"name":"哈哈","age":108}
],
"type":1

输出xml为

<rootNodeXml>
    <childNodeXml>
        <name>李敏</name>
        <age>12</age>
    </childNodeXml>
    <childNodeXml>
        <name>李明</name>
        <age>18</age>
    </childNodeXml>
    <childNodeXml>
        <name>小红</name>
        <age>11</age>
    </childNodeXml>
    <childNodeXml>
        <name>哈哈</name>
        <age>108</age>
    </childNodeXml>
</rootNodeXml>

2.type是2时输入json

"jsonData" = {
    "configureNode" = [
        {"interval":10,"time":12,"addressIp":"127.0.0.1"}
    ],
    "informationNode" = [
        {"name":"李敏","age":12},
        {"name":"李明","age":18},
        {"name":"小红","age":11},
        {"name":"哈哈","age":108}
    ]
},
"type":2

输出xml为

<rootNodeXml>
    <configureNode>
        <interval>10</interval>
        <time>12</time>
        <addressIp>127.0.0.1</addressIp>
    </configureNode>
    <informationNode>
        <name>李敏</name>
        <age>12</age>
    <informationNode>
        <name>李明</name>
        <age>18</age>
    </informationNode>
    <informationNode>
        <name>小红</name>
        <age>11</age>
    </informationNode>
    <informationNode>
        <name>哈哈</name>
        <age>108</age>
    </informationNode>
</rootNodeXml>

3.当type为3时,会输出4个不同的xml列表

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Python 的 `xml.etree.ElementTree` 模块来将 JSON 格式换为 XML 格式。具体步骤如下: 1. 首先,将 JSON 格式换为 Python 的字典或列表对象。可以使用 `json.loads()` 函数来实现。 ```python import json json_str = '{"name": "Alice", "age": 20, "hobbies": ["reading", "traveling"]}' data = json.loads(json_str) ``` 2. 然后,使用 `xml.etree.ElementTree` 模块创建根元素,并递归地将字典或列表换为 XML 元素。 ```python import xml.etree.ElementTree as ET def json_to_xml(data): root = ET.Element("root") if isinstance(data, dict): for key, value in data.items(): child = ET.Element(key) root.append(child) json_to_xml(value, child) elif isinstance(data, list): for item in data: child = ET.Element("item") root.append(child) json_to_xml(item, child) else: root.text = str(data) return root ``` 3. 最后,使用 `ET.tostring()` 函数将根元素换为 XML 字符串。 ```python xml_str = ET.tostring(json_to_xml(data)) print(xml_str) ``` 完整代码如下: ```python import json import xml.etree.ElementTree as ET def json_to_xml(data): root = ET.Element("root") if isinstance(data, dict): for key, value in data.items(): child = ET.Element(key) root.append(child) json_to_xml(value, child) elif isinstance(data, list): for item in data: child = ET.Element("item") root.append(child) json_to_xml(item, child) else: root.text = str(data) return root json_str = '{"name": "Alice", "age": 20, "hobbies": ["reading", "traveling"]}' data = json.loads(json_str) xml_str = ET.tostring(json_to_xml(data)) print(xml_str) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值