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