Ciao anche se hai trovato la soluzione... visto che ultimamente sto lavorando parecchio con xml ti incollo una veloce sessione di test con xml.etree.ElementTree (comunque lxml completo vale la pena) sperando possa essere utile.

On 18/04/12 16:21, Karim Gorjux wrote:
Ciao a tutti!

Ho un problema con il parsing di file xml. PiĆ¹ precisamente non riesco a posizionarmi nel nodo che vorrei.

> from xml.etree.ElementTree import ElementTree
> tree = ElementTree()
> tree.parse('C:\file.xml')

> root = tree.getroot()

A questo punto root contiene l'elemento che punta alla radice del file xml. (Se non sbaglio)

Io vorrei ottenere l'elemento diciamo "c" che nell'albero sarebbe

root/a/b/c

Come posso ottnere direttamente quell'elemento?
Immaginando che il file di input sia file.xml:

--- file.xml ---
<?xml version="1.0" encoding="UTF-8"?>
<root_el>
<a>
<b>
<c testatt="myatt">test</c>
<c testatt="myatt2">test2</c>
</b>
</a>
</root_el>
----------------

from xml.etree.ElementTree import ElementTree
tree = ElementTree(file='file.xml')
tree
# OUT: <xml.etree.ElementTree.ElementTree object at 0x912110c>
root = tree.getroot()
root
# OUT: <Element 'root_el' at 0x8f2c6ec>
c_el_iterator = root.iterfind('./a/b/c')
for iter_el in c_el_iterator:
    print iter_el.tag
    print iter_el.text


# OUT: c
# OUT: test
# OUT: c
# OUT: test2
c_el_list = root.findall('./a/b/c')
for el_item in c_el_list:
    print el_item.tag
    print el_item.text


# OUT: c
# OUT: test
# OUT: c
# OUT: test2
first_c_el = root.find('./a/b/c')
first_c_el.text
# OUT: 'test'
first_c_el.tag
# OUT: 'c'
first_c_el.attrib
# OUT: {'testatt': 'myatt'}



_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a