Python 如何将完整的JSON表单转换为XML
如果我有以下代码并希望转换为XML: 注意:我尝试使用json2xml,但它不会转换整个集合,而只是转换其中的一部分Python 如何将完整的JSON表单转换为XML,python,json,xml,Python,Json,Xml,如果我有以下代码并希望转换为XML: 注意:我尝试使用json2xml,但它不会转换整个集合,而只是转换其中的一部分 { "odoo": { "data": { "record": [ { "model": "ir.ui.view", "id": "lab_tree_view",
{
"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分解成记录字段,它会做得最好。