我正在尝试将一个大的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")
任何帮助深表感谢。
谢谢 苯酚
答案 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
让我知道这是否适合您的情况。
建议零售价