[Python] Dubbi sull'accesso ad un file xml

Lorenzo Sutton lorenzofsutton a gmail.com
Mer 18 Apr 2012 17:25:07 CEST


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'}





Maggiori informazioni sulla lista Python