Remove XML namespace attributes before converting to JSON

737 views Asked by At

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.

0

There are 0 answers