I'm having trouble using xmltodict to convert json to xml. It works fine with a single root and a single object, however when I try to convert multiple objects it returns a ValueError "ValueError: document with multiple roots".
Here's my JSON data:
Here's my script thus far:
import json
import xmltodict
y = """{{ "markers":[ { "point":"new GLatLng(40.266044,-74.718479)","awayTeam":"LUGip","markerImage":"images/red.png","fixture":"Wednesday 7pm","information":"Linux users group meets second Wednesday of each month.","previousScore":"","capacity":"","homeTeam":"Lawrence Library"},{ "point":"new GLatLng(40.211600,-74.695702)","awayTeam":"LUGip HW SIG","tv":"","markerImage":"images/white.png","fixture":"Tuesday 7pm","information":"Linux users can meet the first Tuesday of the month to work out harward and configuration issues.","capacity":"","homeTeam":"Hamilton Library"},{ "point":"new GLatLng(40.294535,-74.682012)","awayTeam":"After LUPip Mtg Spot","tv":"","markerImage":"images/newcastle.png","fixture":"Wednesday whenever","information":"Some of us go there after the main LUGip meeting, drink brews, and talk.","capacity":"2 to 4 pints","homeTeam":"Applebees"}]}"""
y2 = json.loads(y)
print(xmltodict.unparse(y2, pretty = True))
Result:
Traceback (most recent call last):
File "<ipython-input-89-8838ce8b0d7f>", line 1, in <module>
print(xmltodict.unparse(y2,pretty=True))
File "/Users/luzazul/anaconda/lib/python3.4/site-packages/xmltodict.py", line 323, in unparse
raise ValueError('Document must have exactly one root.')
ValueError: Document must have exactly one root.
Any help would be greatly appreciated, thanks!
Assuming you've cleaned up the input to make it valid (see comment on question)...
It looks like xmltodict is trying to make a markers
element for each item in the list, and since markers
is at the top level, you're trying to create multiple roots.
I would go about it by adding a top level element around the data like this:
y2 = {'root':y2}