XML file remove <car> sibling using elementTree and jython

James Kelly <[email protected]> Sun, 1 Nov 2020 06:44:52 -0600
Newsgroups gmane.comp.lang.jython.user
Message-ID <CANio7e_CNXDuS4xTopYPRQpLwHvDsH=cjY4S-aG4tc5Ci8OYng@mail.gmail.com>
--===============6622769501871054656==
Content-Type: multipart/alternative; boundary="000000000000d7903105b30affcd"

--000000000000d7903105b30affcd
Content-Type: text/plain; charset="UTF-8"

Win-10, Java 1.8, current JMRI version, NetBeans IDE, Jython, elementTree
I'm pulling elements from OperationsCarRoster.xml and want to delete some
siblings. Since all siblings have the same name <car> how can I select and
delete a specific car using attributes?
for example how do I use elementTree Remove(subelement) to delete a car
with id="MILW1001"

i'm using Jython (Python) on Win-10 and elementTree
here's all the code as I have it right now.

import xml.etree.ElementTree as ET
def __init__(self):
            #def open_car_xml_file():
            global trainTree
            global trainRoot
            trainTree = ET.parse('train.xml')
            trainRoot = trainTree.getroot()
            #self.add_train_rfid_tags()
            print trainRoot

def drop_car(self, car, engine, location):
        for elem in trainRoot:
            for subelem in elem.findall('car'):
                indentifier = str(subelem.get('engine', default=None))
                if indentifier == engine:
                    indentifier2 = str(subelem.get('id', default=None))
                    if indentifier2 == car:
                        getDroppedCarData = [0,1,2,3,4,5,6,7]
                        getDroppedCarData[0] = subelem.get('id',
default=None)
                        getDroppedCarData[1] = subelem.get('roadName',
default=None)
                        getDroppedCarData[2] = subelem.get('roadNumber',
default=None)
                        getDroppedCarData[3] = subelem.get('type',
default=None)
                        getDroppedCarData[4] = subelem.get('color',
default=None)
                        getDroppedCarData[5] = subelem.get('rfid',
default=None)
                        getDroppedCarData[6] = subelem.get('locationId',
default=None)
                        getDroppedCarData[7] = subelem.get('owner',
default=None)
                        (how do I using remove() to delete this record?

    return getDroppedCarData

--000000000000d7903105b30affcd
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-size:large"><sp=
an style=3D"color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helv=
etica,Arial,sans-serif;font-size:14px">Win-10, Java 1.8, current JMRI versi=
on, NetBeans IDE, Jython, elementTree</span><br style=3D"box-sizing:border-=
box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Ar=
ial,sans-serif;font-size:14px"><span style=3D"color:rgb(51,51,51);font-fami=
ly:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">I&=
#39;m pulling elements from OperationsCarRoster.xml and want to delete some=
 siblings. Since all siblings have the same name &lt;car&gt; how can I sele=
ct and delete a specific car using attributes?</span><br style=3D"box-sizin=
g:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Hel=
vetica,Arial,sans-serif;font-size:14px"><span style=3D"color:rgb(51,51,51);=
font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size=
:14px">for example how do I use elementTree Remove(subelement) to delete a =
car with=C2=A0</span><span style=3D"box-sizing:border-box;color:rgb(51,51,5=
1);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-s=
ize:14px">id=3D&quot;MILW1001&quot;</span>=C2=A0</div><div class=3D"gmail_d=
efault" style=3D"font-size:large"><br></div><span style=3D"color:rgb(51,51,=
51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-=
size:14px">i&#39;m using Jython (Python) on Win-10 and elementTree</span><b=
r style=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helv=
etica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px"><span style=3D"=
color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,=
sans-serif;font-size:14px">here&#39;s all the code as I have it right now.<=
/span><br style=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&q=
uot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px"><br sty=
le=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica=
 Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px"><span style=3D"color=
:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-=
serif;font-size:14px">import xml.etree.ElementTree as ET</span><br style=3D=
"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue=
&quot;,Helvetica,Arial,sans-serif;font-size:14px"><div style=3D"box-sizing:=
border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helve=
tica,Arial,sans-serif;font-size:14px">def __init__(self):</div><div style=
=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica N=
eue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 #def open_car_xml_file():</div><div style=3D"box-sizin=
g:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Hel=
vetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 global trainTree</div><div style=3D"box-sizing:border-box;color:rgb(=
51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif=
;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 global trainRoot=
</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&=
quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 trainTree =3D ET.parse(&#39;train.xml&#=
39;)</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);font-fami=
ly:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 trainRoot =3D trainTree.getroot()=
</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&=
quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #self.add_train_rfid_tags()</div><div s=
tyle=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helveti=
ca Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 print trainRoot</div><br style=3D"box-sizing:borde=
r-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,=
Arial,sans-serif;font-size:14px"><div style=3D"box-sizing:border-box;color:=
rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-s=
erif;font-size:14px">def drop_car(self, car, engine, location):</div><div s=
tyle=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helveti=
ca Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 for elem in trainRoot:</div><div style=3D"box-sizing:border-box;=
color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,=
sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for su=
belem in elem.findall(&#39;car&#39;):</div><div style=3D"box-sizing:border-=
box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Ar=
ial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 indentifier =3D str(subelem.get(&#39;engine&#39;, default=3DN=
one))</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);font-fam=
ily:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if indentifier =3D=
=3D engine:</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);fo=
nt-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:1=
4px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
indentifier2 =3D str(subelem.get(&#39;id&#39;, default=3DNone))</div><div s=
tyle=3D"box-sizing:border-box;color:rgb(51,51,51);font-family:&quot;Helveti=
ca Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if indentifier2 =3D=3D=
 car:</div><div style=3D"box-sizing:border-box;color:rgb(51,51,51);font-fam=
ily:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:14px">=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 getDroppedCarData =3D [0,1,2,3,4,5,6,7]</div><div style=3D"box-s=
izing:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;=
,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[0] =
=3D subelem.get(&#39;id&#39;, default=3DNone)</div><div style=3D"box-sizing=
:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helv=
etica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[1] =3D s=
ubelem.get(&#39;roadName&#39;, default=3DNone)</div><div style=3D"box-sizin=
g:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Hel=
vetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[2] =3D s=
ubelem.get(&#39;roadNumber&#39;, default=3DNone)</div><div style=3D"box-siz=
ing:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,H=
elvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[3] =
=3D subelem.get(&#39;type&#39;, default=3DNone)</div><div style=3D"box-sizi=
ng:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,He=
lvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[4] =3D =
subelem.get(&#39;color&#39;, default=3DNone)</div><div style=3D"box-sizing:=
border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helve=
tica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[5] =3D s=
ubelem.get(&#39;rfid&#39;, default=3DNone)</div><div style=3D"box-sizing:bo=
rder-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helveti=
ca,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[6] =3D sube=
lem.get(&#39;locationId&#39;, default=3DNone)</div><div style=3D"box-sizing=
:border-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helv=
etica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 getDroppedCarData[7] =3D s=
ubelem.get(&#39;owner&#39;, default=3DNone)</div><div style=3D"box-sizing:b=
order-box;color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quot;,Helvet=
ica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (how do I using remove() to d=
elete this record?</div><div style=3D"box-sizing:border-box;color:rgb(51,51=
,51);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font=
-size:14px">=C2=A0</div><div class=3D"gmail_default" style=3D"font-size:lar=
ge"><span style=3D"color:rgb(51,51,51);font-family:&quot;Helvetica Neue&quo=
t;,Helvetica,Arial,sans-serif;font-size:14px">=C2=A0 =C2=A0 return getDropp=
edCarData</span>=C2=A0<br></div></div>

--000000000000d7903105b30affcd--


--===============6622769501871054656==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============6622769501871054656==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Jython-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jython-users

--===============6622769501871054656==--