使用Python将JSON转换为XML文件

时间:2020-04-15 11:37:39

标签: python json xml

我正在尝试将一个大的JSON文件转换为XML文件。以下是我从大型JSON中取出的两行内容。我正在尝试为该文件中存在的每个INVENTORY_SEQ_ID创建一个根节点:

[{"INVENTORY_SEQ_ID":4577494,"GROUP_NBR":8605548,"SEQ_NBR":300,"FACILITY_CODE":"OCALADC","COMPANY_CODE":"AMES"},
{"INVENTORY_SEQ_ID":4577495,"GROUP_NBR":8605548,"SEQ_NBR":301,"FACILITY_CODE":"OCALADC","COMPANY_CODE":"AMES"}]

我已经编写了以下代码(我只是该领域的初学者),并且如果JSON文件中只有一个Row,它可以工作。如果还有更多的thab,则会引发错误。

import json as j
with open("invdata.json") as input_var:
 d=j.load(input_var)
import xml.etree.cElementTree as e
r=e.Element("InvHead")
e.SubElement(r,"INVENTORY_SEQ_ID").text = str(d["INVENTORY_SEQ_ID"])
e.SubElement(r,"GROUP_NBR").text = str(d["GROUP_NBR"])
e.SubElement(r,"SEQ_NBR").text = str(d["SEQ_NBR"])
e.SubElement(r,"FACILITY_CODE").text = d["FACILITY_CODE"]
e.SubElement(r,"COMPANY_CODE").text = d["COMPANY_CODE"]
a=e.ElementTree(r)
a.write("output.xml")

任何帮助深表感谢。

谢谢 苯酚

2 个答案:

答案 0 :(得分:1)

from json import load
from dicttoxml import dicttoxml
...
xml = dicttoxml(load(input_var))

然后将xml保存到文件

答案 1 :(得分:1)

当只有一个对象时,json.load将返回一则字典,而对于多个条目,它将返回一列字典。因此,如果将d [“ INVENTORY_SEQ_ID”]替换为d [i] [“ INVENTORY_SEQ_ID”],就可以使代码正常工作。

相反,您可以尝试这种更简单的方法

from json import load,loads
from dicttoxml import dicttoxml

with open("invdata.json") as input_var:
 d=load(input_var)
di = {"InvHead":d}
xm = dicttoxml(di)     #returns xm as <class 'bytes'> object

with open("output.xml", mode='wb') as out:  #opening in write-bytes mode 
    out.write(xm)

输出的XML是 output.xml

让我知道这是否适合您的情况。
建议零售价

相关问题