Python File XML: come leggere, scrivere e analizzare
Cos'è l'XML?
XML sta per eXtensible Markup Language. È stato progettato per archiviare e trasportare quantità di dati piccole e medie ed è ampiamente utilizzato per condividere informazioni strutturate.
Python consente di analizzare e modificare documenti XML. Per analizzare un documento XML, è necessario avere in memoria l'intero documento XML. In questo tutorial vedremo come utilizzare la classe Minidom XML in Python per caricare e analizzare file XML.
Come analizzare XML utilizzando minidom
Abbiamo creato un file XML di esempio che analizzeremo.
Passaggio 1) Creare un file XML di esempio
All'interno del file possiamo vedere il nome, il cognome, l'abitazione e l'area di competenza (SQL, Python, Test e Affari)
Passaggio 2) Utilizzare la funzione di analisi per caricare e analizzare il file XML
Una volta analizzato il documento, stamperemo il file “nome nodo” della radice del documento e del “nome tag firstchild”. Tagname e nodename sono le proprietà standard del file XML.
- Importa il modulo xml.dom.minidom e dichiara il file che deve essere analizzato (myxml.xml)
- Questo file contiene alcune informazioni di base su un dipendente come nome, cognome, casa, competenza, ecc.
- Usiamo la funzione di analisi sul minidom XML per caricare e analizzare il file XML
- Abbiamo una variabile doc e doc ottiene il risultato della funzione parse
- Vogliamo stampare il nome del nodo e il nome del tag figlio dal file, quindi lo dichiariamo nella funzione print
- Esegui il codice: stampa il nome del nodo (#document) dal file XML e il primo nome tag figlio (dipendente) dal file XML
Note::
Il nome del nodo e il nome del tag figlio sono i nomi o le proprietà standard di un dom XML.
Passaggio 3) Richiamare l'elenco dei tag XML dal documento XML e stamparlo
Successivamente, possiamo anche richiamare l'elenco dei tag XML dal documento XML e stamparlo. Qui abbiamo stampato l'insieme di competenze come SQL, Python, Testing e Affari.
- Dichiarare la competenza variabile, da cui estrarremo tutte le competenze che il nome del dipendente ha
- Utilizza la funzione standard dom chiamata “getElementsByTagName”
- Questo otterrà tutti gli elementi chiamati abilità
- Dichiara il loop su ciascuno dei tag delle abilità
- Esegui il codice: fornirà un elenco di quattro abilità
Come scrivere un nodo XML
Possiamo creare un nuovo attributo utilizzando la funzione "createElement" e quindi aggiungere questo nuovo attributo o tag ai tag XML esistenti. Abbiamo aggiunto un nuovo tag "BigData" nel nostro file XML.
- Devi codificare per aggiungere il nuovo attributo (BigData) al tag XML esistente
- Quindi, devi stampare il tag XML con i nuovi attributi aggiunti al tag XML esistente
- Per aggiungere un nuovo XML e aggiungerlo al documento, utilizziamo il codice “doc.create elements”
- Questo codice creerà un nuovo tag di abilità per il nostro nuovo attributo "Big-data"
- Aggiungi questo tag di abilità nel documento primo figlio (dipendente)
- Esegui il codice: il nuovo tag "big data" verrà visualizzato con l'altro elenco di competenze
Esempio di parser XML
Python 2 Esempio
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 Esempio
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
Come analizzare XML utilizzando ElementTree
ElementTree è un'API per manipolare XML. ElementTree è il modo semplice per elaborare file XML.
Stiamo utilizzando il seguente documento XML come dati di esempio:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Lettura XML utilizzando ElementTree:
dobbiamo prima importare il modulo xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Ora recuperiamo l'elemento root:
root = tree.getroot()
Di seguito è riportato il codice completo per la lettura dei dati XML sopra riportati
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
produzione:
Expertise Data: SQL Python
Sommario
Python ti consente di analizzare l'intero documento XML in una volta sola e non solo una riga alla volta. Per analizzare il documento XML è necessario avere l'intero documento in memoria.
- Per analizzare il documento XML
- Importa xml.dom.minidom
- Utilizzare la funzione “parse” per analizzare il documento ( doc=xml.dom.minidom.parse (nome file);
- Richiama l'elenco dei tag XML dal documento XML utilizzando il codice (=doc.getElementsByTagName( “nome dei tag xml”)
- Per creare e aggiungere nuovi attributi nel documento XML
- Utilizza la funzione “creaElement”