JSON до XML Файл с использованием Python - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь преобразовать один большой JSON файл в XML файл. Ниже приведены две строки, которые я вынул из большого JSON. Я пытаюсь создать root узел для каждого 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. Выдает ошибку, если их больше.

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")

Любая помощь очень ценится.

Спасибо ANmol

Ответы [ 2 ]

1 голос
/ 15 апреля 2020
from json import load
from dicttoxml import dicttoxml
...
xml = dicttoxml(load(input_var))

затем сохраните xml в файл

0 голосов
/ 15 апреля 2020

Когда есть только один объект, json .load будет возвращать dict, тогда как для нескольких записей он возвращает список dict. Таким образом, вы можете заставить свой код работать, если вы замените 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 является выводом. xml

Дайте мне знать, если это работает в вашем случае. РРП

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...