I am trying to build an xml from python, how to loop in the sub elements? I have been trying to get it in the format needed but cannot figure out how
The output I am getting is this:
b'<member x0="28.921" y0="710.377" text="1. Case gdfh "><sub/></member>' b'<member><sub x0="54.721" y0="695.792" text="Version "> 0</sub></member>' b'<member><sub x0="54.721" y0="688.112" text="AER Number "> 4735986</sub></member>' b'<member><sub x0="54.721" y0="680.792" text="Initial Unit "> SBFBKJSF</sub></member>' b'<member x0="28.921" y0="561.937" text="2. Patient"><sub/></member>' b'<member><sub x0="54.721" y0="510.697" text="Patient Information"></sub></member>' b'<member><sub x0="54.721" y0="496.112" text="Age "> 60 Years</sub></member>' b'<member><sub x0="54.721" y0="488.432" text="Height "> 171 Centimeter</sub></member>' The output I want is this:
b' <member x0="28.921" y0="710.377" text="1. Case gdfh "> <sub x0="54.721" y0="695.792" text="Version "> 0</sub> <sub x0="54.721" y0="688.112" text="AER Number "> 4735986</sub> <sub x0="54.721" y0="680.792" text="Initial Unit "> SBFBKJSF</sub> </member> <member x0="28.921" y0="561.937" text="2. Patient"> <sub x0="54.721" y0="510.697" text="Patient Information"></sub> <sub x0="54.721" y0="496.112" text="Age "> 60 Years</sub> <sub x0="54.721" y0="488.432" text="Height "> 171 Centimeter</sub> </member> ' The code I'm writing is this:
Here, 'st' is the list of objects
from lxml import etree import xml.etree.ElementTree as xml root = etree.Element('root') for j in st: member = etree.SubElement(root, 'member') submbr = etree.SubElement(member, 'sub') if j.x0 == '28.921': root.append(member) member.append(submbr) member.attrib['x0'] = j.x0 member.attrib['y0'] = j.y0 member.attrib['text'] = j.text[0] member.text = j.text[1] else: submbr.attrib['x0'] = j.x0 submbr.attrib['y0'] = j.y0 submbr.attrib['text'] = j.text[0] submbr.text = j.text[1] out = etree.tostring(member) print(out) The data structure , the st list when looped through has these values
TEXT x0 y0 ['1. Case gdfh ', ''] 28.921 , 710.377 ['Version ', ' 0', ''] 54.721 , 695.792 ['AER Number ', ' 4735986', ''] 54.721 , 688.112 ['Initial Unit ', 'SBFBKJSF ', ''] 54.721 , 680.792 ['2. Patient', ''] 28.921 , 561.937 ['Patient Information', ''] 54.721 , 510.697 ['Age ', ' 60 Years', ''] 54.721 , 496.112 ['Height ', ' 171 Centimeter', ''] 54.721 , 488.432
stvariable, but only the necessary part), so people don't have to make that up in order to provide tested code in an answer.if:body and yourelse:are equal. There is no need to have an if/else when you do the same thing in either case anyway.