rimuovere elemento ElementTree
« il: Febbraio 02, 2011, 10:29 »
Buongiorno a tutti. Mi permetto di postare un problema sul modulo ElementTree dato che e' la prima volta che uso python (non solo un programmatore premetto) per parsare XML.
Ecco il mio file test.xml.

[codice]<root>
<unit id="XXX_YYYYY">
<positioning>
...
</positioning>
</unit>
...
<frame id="Roma">
<test-unit id="XXX_YYYYY"/>
<test-unit id="XXZ_YYYYZ"/>
...
</frame>
</root>[/codice]

Vorrei rimuovere l'elemento <unit></unit> se il suo attributo 'id' NON matcha con attributo 'id' di frame.
Dopo averlo rimosso, ricostruire file e scriverlo in output.
Grazie mille per l'aiuto, in basso il mio codice

E

[codice]
from elementtree import ElementTree as ET
with open('test.xml', 'rt') as f:
    root = ET.parse(f).getroot()
for elemt_unit in root.getiterator('unit'):
   for element_test in root.getiterator('test-unit'):
      if not elemt_unit.attrib.get('id') in element_test.get('id'):
         root.remove(elemt_unit)
         root.remove(elemt_unit)
tree = ET.ElementTree(root)
tree.write("out_test.xml")
[/codice]
« Ultima modifica: Febbraio 02, 2011, 10:51 da action_man »