Python 如何将完整的JSON表单转换为XML

Python 如何将完整的JSON表单转换为XML,python,json,xml,Python,Json,Xml,如果我有以下代码并希望转换为XML: 注意:我尝试使用json2xml,但它不会转换整个集合,而只是转换其中的一部分 { "odoo": { "data": { "record": [ { "model": "ir.ui.view", "id": "lab_tree_view",

如果我有以下代码并希望转换为XML: 注意:我尝试使用json2xml,但它不会转换整个集合,而只是转换其中的一部分

{
  "odoo": {
    "data": {
      "record": [
        {
          "model": "ir.ui.view",
          "id": "lab_tree_view",
          "field": [
            {
              "name": "name",
              "#text": "human.name.tree"
            },
            {
              "name": "model",
              "#text": "human.name"
            },
            {
              "name": "priority",
              "eval": "16"
            },
            {
              "name": "arch",
              "type": "xml",
              "tree": {
                "string": "Human Name",
                "field": [
                  {"name": "name"},
                  {"name": "family"},
                  {"name": "given"},
                  {"name": "prefix"}
                ]
              }
            }
          ]
        },
        {
          "model": "ir.ui.view",
          "id": "human_name_form_view",
          "field": [
            {
              "name": "name",
              "#text": "human.name.form"
            },
            {
              "name": "model",
              "#text": "human.name"
            },
            {
              "name": "arch",
              "type": "xml",
              "form": {
                "string": "Human Name Form",
                "sheet": {
                  "group": {
                    "field": [
                      {"name": "name"},
                      {"name": "family"},
                      {"name": "given"},
                      {"name": "prefix"}
                    ]
                  }
                }
              }
            }
          ]
        }
      ],
      "#text": "\n\n\n        #ACTION_WINDOW_FOR_PATIENT\n        ",
      "record#1": {
        "model": "ir.actions.act_window",
        "id": "action_human_name",
        "field": [
          {
            "name": "name",
            "#text": "Human Name"
          },
          {
            "name": "res_model",
            "#text": "human.name"
          },
          {
            "name": "view_mode",
            "#text": "tree,form"
          },
          {
            "name": "help",
            "type": "html",
            "p": {
              "class": "o_view_nocontent_smiling_face",
              "#text": "Create the Human Name\n                "
            }
          }
        ]
      },
      "menuitem": [
        {
          "id": "FHIR_root",
          "name": "FHIR"
        },
        {
          "id": "FHIR_human_name",
          "name": "Human Name",
          "parent": "FHIR_root",
          "action": "action_human_name"
        }
      ]
    }
  }
}
是否有任何Python库或专用代码来执行此操作

我尝试构建自定义函数来解决这个问题并将它们全部转换,但是,我被这个问题困住了。 这里的用例是输入上面的代码,输出应该是任何在线转换器生成的代码

编辑:

上述代码仅将json的一部分(如以下代码)转换为xml:

    {
  "record": {
    "model": "ir.ui.view",
    "id": "address_tree_view",
    "field": [
      {
        "name": "name",
        "#text": "address.tree.view"
      },
      {
        "name": "model",
        "#text": "address"
      },
      {
        "name": "priority",
        "eval": "16"
      },
      {
        "name": "arch",
        "type": "xml",
        "tree": {
          "string": "Address",
          "field": [
            {
              "name": "text_address"
            },
            {
              "name": "address_line1"
            },
            {
              "name": "country_id"
            },
            {
              "name": "state_id"
            },
            {
              "name": "address_district"
            },
            {
              "name": "address_city"
            },
            {
              "name": "address_postal_code"
            }
          ]
        }
      }
    ]
  }
}

PS:我用过在线转换器,但我不想在这里用。

试试
dicttoxml
libary

如果您正在从JSON文件检索数据

import json
import dicttoxml

with open("file_name.json", "r") as j:
    data = json.load(j);

xml = dicttoxml.dicttoxml(data)
print(xml)

尝试
dictoxml
libary

如果您正在从JSON文件检索数据

import json
import dicttoxml

with open("file_name.json", "r") as j:
    data = json.load(j);

xml = dicttoxml.dicttoxml(data)
print(xml)

使用dicttoxml将JSON直接转换为XML

安装 pip安装DICTOML 或 轻松安装DICTOML

In [2]: from json import loads

In [3]: from dicttoxml import dicttoxml

In [4]: json_obj = '{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'

In [5]: xml = dicttoxml(loads(json_obj))

In [6]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main type="dict"><aaa type="str">10</aaa><bbb type="list"><item type="int">1</item><item type="int">2</item><item type="int">3</item></bbb></main></root>

In [7]: xml = dicttoxml(loads(json_obj), attr_type=False)

In [8]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main><aaa>10</aaa><bbb><item>1</item><item>2</item><item>3</item></bbb></main></root>
[2]中的
:从json导入加载
在[3]中:从dicttoxml导入dicttoxml
在[4]:json_obj='{“main”:{“aaa”:“10”,“bbb”:[1,2,3]}'
在[5]中:xml=dicttoxml(加载(json_obj))
在[6]中:打印(xml)

使用dicttoxml将JSON直接转换为XML

安装 pip安装DICTOML 或 轻松安装DICTOML

In [2]: from json import loads

In [3]: from dicttoxml import dicttoxml

In [4]: json_obj = '{"main" : {"aaa" : "10", "bbb" : [1,2,3]}}'

In [5]: xml = dicttoxml(loads(json_obj))

In [6]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main type="dict"><aaa type="str">10</aaa><bbb type="list"><item type="int">1</item><item type="int">2</item><item type="int">3</item></bbb></main></root>

In [7]: xml = dicttoxml(loads(json_obj), attr_type=False)

In [8]: print(xml)
<?xml version="1.0" encoding="UTF-8" ?><root><main><aaa>10</aaa><bbb><item>1</item><item>2</item><item>3</item></bbb></main></root>
[2]中的
:从json导入加载
在[3]中:从dicttoxml导入dicttoxml
在[4]:json_obj='{“main”:{“aaa”:“10”,“bbb”:[1,2,3]}'
在[5]中:xml=dicttoxml(加载(json_obj))
在[6]中:打印(xml)

向我们展示您迄今为止所做的尝试@KlausD。我添加了更多,这是否更清楚了问题?对于初学者,如果我们将JSON分解为记录字段,它将做得最好。向我们展示您迄今为止所做的尝试@我已经添加了更多,这是否更清楚了这个问题?对于初学者来说,如果我们将JSON分解成记录字段,它会做得最好。