0

I'm converting an XML file to JSON. Namespace attributes in XML are also created in JSON file. How to remove that namespaces before converting XML to JSON?

Below is my xml code

<exta>
<sure>This </signature>
<begin_date>2019-07-12T09:41:48.187</begin_date>
<ver>4</ver>
<maiden_bc>1549</maiden_bc>
<exta_id>12345</exta_id>
<nps_max_price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <exta_id>72723</exta_id>
    <extended_datetime>2018-11-20T11:01:29.040</extended_datetime>
    <event_ind>E</event_ind>
    <maiden>12345</maiden>
    <patient_id>123</patient_id>
    <boss_id>123LHF</boss_id>
    <template_name />
    <end_date>2019-01-01T00:00:00</end_date>
    <UYI_AMN xsi:nil="true" />
    <dedt_bef_ATS xsi:nil="true" />
    <form>W</form>

expected xml is:

<exta>
<sure>This </signature>
<begin_date>2019-07-12T09:41:48.187</begin_date>
<ver>4</ver>
<maiden_bc>1549</maiden_bc>
<exta_id>12345</exta_id>
<nps_max_price>
    <exta_id>72723</exta_id>
    <extended_datetime>2018-11-20T11:01:29.040</extended_datetime>
    <event_ind>E</event_ind>
    <maiden>12345</maiden>
    <patient_id>123</patient_id>
    <boss_id>123LHF</boss_id>
    <template_name />
    <end_date>2019-01-01T00:00:00</end_date>
    <UYI_AMN/>
    <dedt_bef_ATS/>
    <form>W</form>

my code to convert xml to json is:

for datafile in bucket.objects.filter(Prefix="test/"):

    if "xml" in datafile.key:
        # converting xml to json
        xml_file = datafile.get()['Body']
        print(datafile.get()['Body'])
        tree = ET.parse(xml_file)
        xml_data = tree.getroot()
        xmlstr = ET.tostring(xml_data, encoding='utf-8', method='xml')
        data_dict = dict(xmltodict.parse(xmlstr, attr_prifix=''))
        json_data = json.dumps(data_dict)

How to remove namespaces before I parse xml? Please help.

Parfait
  • 104,375
  • 17
  • 94
  • 125
Sarath
  • 35
  • 3

0 Answers0