- lettura
oggetto = ET.parse('file .xml') leggo il file .xml
root = oggetto.getroot() elemento radice del file XML, cioé il dizionartio composto dagli elementi e valori del file
root.atrib['elemento'] ritorna l'attributo dell'elemento
estrazione dati degli elementi
root[id].tag nome del tag
root[id].text valore del tag
for child in root:
child.tag la proprieta' tag fornisce il nome dell'elemento, incluso l'eventuale namespace
child.text la proprieta' text fornisce il contenuto testuale dell'elemento
child.attrib ovviamente, possiamo ottenere gli attributi di ogni elemento figlio
esempio: file file.xml con un solo attributo
<root test="prova">
<elemento>Test</elemento>
</root>
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
root.attrib['test']
l'attributo di test sarà prova
esempio: visualizzo dati dei primo child del file test.xml
<root>
<elemento>Test1</elemento>
<elemento>Test2</elemento>
<elemento>Test3</elemento>
</root>
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
print(root[0].tag)
print(root[0].text)
elemento
Test1
esempio: visualizzo dati dei child del file test.xml
<root>
<elemento>Test1</elemento>
<elemento>Test2</elemento>
<elemento>Test3</elemento>
</root>
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for child in root:
print(child.tag) #la proprieta' tag fornisce il nome dell'elemento, incluso l'eventuale namespace
print(child.text) #la proprieta' text fornisce il contenuto testuale dell'elemento
print(child.attrib) #ovviamente, possiamo ottenere gli attributi di ogni elemento figlio
elemento
Test1
{}
elemento
Test2
{}
elemento
Test3
{}
- modifica
é possibile dopo aver letto un file xml modificarlo e salvarlo
root[id].text = 'testo' modifica del testo di un elemento
root[id].attrib['nome'] = 'testo' inserimento (o modifica) di un attributo
root.remove(root[id]) rimozione di un elemento
oggetto.write('file.xml') salvo il file
esempio> modifico dei dati in un file test.xml
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
root[0].text = 'Prova' #modifica del testo di un elemento
root[1].attrib['nome'] = 'tizio' #inserimento (o modifica) di un attributo
root.remove(root[2]) #rimozione di un elemento
tree.write('test.xml') salvo il file
- scrittura
é possibile scrivere un file xml nuovo direttamente
import xml.etree.ElementTree as ET
root = ET.Element('tag root') creazione della root con settaggio del nome
subroot = ET.SubElement(root, 'primo tag') creazione si un sub tag dentro root
subroot.attrib['id'] = '1' settaggio attributo
primosubtag = ET.SubElement(subroot, 'nome tag')
primosubtag.text = 'testo' testo tag
secondosubtag = ET.SubElement(subroot, 'nome tag')
secondosubtag.text = 'testo'
tree = ET.ElementTree(root) creo oggetto di tutta la root
tree.write('file.xml') scrivo il file
esempio: voglio scrivere questo file .xml
<rubrica>
<persona id="1">
<nome>Mario</nome>
<cognome>Rossi</cognome>
</persona>
</rubrica>
import xml.etree.ElementTree as ET
root = ET.Element('rubrica')
persona = ET.SubElement(root, 'persona')
persona.attrib['id'] = '1'
nome = ET.SubElement(persona, 'nome')
nome.text = 'Mario'
cognome = ET.SubElement(persona, 'cognome')
cognome.text = 'Rossi'
tree = ET.ElementTree(root)
tree.write('file.xml')