Python XML ElementTree

Python XML ElementTree
Possiamo generare, modificare e analizzare i documenti XML utilizzando l'utile elemento della libreria Python. Si pensa che un albero rappresenti l'intero documento. In questo albero, l'elemento rappresenta un singolo nodo o ramo. In XML, la lettura o la scrittura da o dai file viene eseguita principalmente a livello di ElementTree, mentre l'interazione con gli elementi si basa sul livello dell'elemento. Il modulo Python ElementTree verrà utilizzato per modificare e aggiungere dati ai file XML mentre impariamo come analizzare XML con Python in questo tutorial. Studieremo anche espressioni XPath e alberi XML al fine di comprendere i dati.

Il framework XML ne utilizza per comprendere i dati in modo dinamico. Si occupa in gran parte della costruzione di pagine Web con i dati che segue un formato predeterminato. XML, definito anche un documento XML, viene utilizzato per generare una pagina. Una struttura semplice e gerarchica che ricorda un albero viene prodotta usando XML. L'obiettivo principale di questo post è mostrarti come leggere e comprendere i file usando Python.

I dati di esempio per questa parte saranno prelevati dal seguente documento XML:

Da quello che hai letto nel file XML, puoi vedere che l'elemento root si chiama "cliente" che contiene tutti gli altri elementi, come "clienti", che sono considerati "elementi figli" o "sottoelementi."Va notato che questi componenti infantili hanno la capacità di genitore di altri elementi figlio, che sono noti come" elementi sub-child "e fungono da loro genitori.

Osserverai, ad esempio, che l'elemento del cliente contiene alcuni "attributi", come ID, nomi e fatture, che forniscono ancora più dettagli. Ora, leggeremo queste informazioni sul file XML utilizzando i diversi codici indicati di seguito.

Esempio 1:
Possiamo ottenere il nome del tag root dal file XML specificato in Python utilizzando la funzione GetRoot dal modulo ElementTree.

Importa XML.Etree.ElementTree come ET
file_root = et.Parse ('Cliente.XML ').getRoot ()
file_tag = file_root.etichetta
Stampa (file_tag)

Abbiamo incluso l'elemento del modulo a cui è assegnato un alias come ET. Quindi, abbiamo dichiarato un oggetto come file_root. All'interno di quell'oggetto, abbiamo una funzione di analisi che prende il nome del file XML. Allo stesso tempo, abbiamo chiamato il metodo GetRoot per ottenere il nome della radice. Abbiamo creato un altro oggetto come file_tag in cui abbiamo chiamato il tag con l'oggetto file_root. Il risultato file_tag verrà stampato sullo schermo.

Puoi vedere il nome del tag root generato è i clienti come indicato nel file XML.

Esempio 2:
Possiamo anche ottenere la radice degli attributi esistenti nel file XML. Con questo esempio, possiamo realizzare la radice dell'attributo.

Importa XML.Etree.ElementTree come ET
f_root = et.Parse ('Cliente.XML ').getRoot ()
f_attributes = f_root.attribuzione
stampa (f_attributes)
day = f_attributes.Ottieni ('Day')
print ('Day:', Day)

Dato che abbiamo inserito il modulo ElementTree del modulo, abbiamo creato un oggetto come F_Root in cui abbiamo definito il file XML all'interno del metodo di Parse. Abbiamo anche definito il metodo GetRoot all'interno di quell'oggetto per ottenere il nome radice. Quindi, abbiamo creato un oggetto come f_attributes per la radice dell'attributo e stampato il suo valore. Per ottenere l'attributo particolare, abbiamo definito un oggetto come un giorno e assegnato l'attributo al metodo GET al suo interno. L'attributo specifico verrà stampato dalla funzione di stampa.

I risultati del codice sopra sono i seguenti:

Esempio 3:
Possiamo accedere agli attributi dei nodi figlio della radice implementando il seguente codice.

Importa XML.Etree.ElementTree come ET
ROOT = ET.Parse ('Cliente.XML ').getRoot ()
Per il cliente in root.findall ('cliente'):
Attributi = Cliente.attribuzione
Stampa (attributi)
type = attributi.get ('type')

Il primo passaggio in due fasi del codice è uguale al codice sopra specificato. Quindi, abbiamo un ciclo per ricapitolare su ciascun nodo figlio "cliente". Dopo tale iterazione, abbiamo creato un attributo variabile che ottiene tutti i nodi degli attributi. Abbiamo recuperato il tipo di attributi assegnando "tipo" all'interno del metodo Get.

I tipi di attributi nei nodi figlio vengono visualizzati come segue:

Esempio 4:
L'esempio è accedere al nodo dell'elemento dal file XML senza conoscere il nome del tag rispetto all'elemento nodo corrispondente.

Importa XML.Etree.ElementTree come ET
ROOT = ET.Parse ('Cliente.XML ').getRoot ()
Per il cliente in root.findall ('cliente'):
id = cliente.Trova ('id').testo
print ('id:', id)
nome = cliente.Trova ("nome").testo
print ('Nome:', nome)
Bill = Cliente.Trova ("Bill").testo
Print ('Bill:', Bill)

Inizia con il ciclo per, abbiamo iterate il ciclo per ogni nodo nel file XML. Quindi, otteniamo l'ID elemento, il nome e la fattura passandoli al metodo di ricerca e stampando ogni elemento con il suo valore.

I nodi dell'elemento ottenuti dal codice sopra sono i seguenti:

Esempio 5:
Vediamo l'ultimo esempio in cui stiamo accedendo al nome del tag root dal file XML del cliente.

Importa XML.Etree.ElementTree come ET
ROOT = ET.Parse ('Cliente.XML ').getRoot ()
Per il cliente in root.findall ('cliente'):
Per gli articoli nel cliente:
i_name = elementi.etichetta
I_Value = Cliente.Trova (articoli.etichetta).testo
print (i_name, ':', i_value)

Dal primo loop, abbiamo iterato su ciascuno dei nodi. Quindi, abbiamo utilizzato di nuovo il ciclo per ottenere tutti gli articoli del nodo del cliente. Gli elementi si accedono chiamando l'oggetto tag e passandolo al metodo Trova.

Tutto il tag articolo del tag cliente viene visualizzato come segue:

Conclusione

Un pacchetto Python essenziale chiamato ElementTree consente di attraversare e leggere i documenti XML. Il documento XML è suddiviso in una struttura di albero gestibile usando ElementTree. In caso di dubbio, stampalo utilizzando la stampa di comando di stampa pratico (ET.toString (root, codifica = "utf8").decode ('utf8')) per esaminare contemporaneamente l'intero documento XML. Quando si modificano, si aggiungono o eliminando da un XML, il controllo è utile. L'uso di elementi e XML ha diverse considerazioni importanti. I tag definiscono quali valori dovrebbero essere delineati nella struttura dell'albero e aiutarli a costruirli. La capacità di leggere e scrivere su un XML può essere facilitata da una struttura intelligente. La relazione genitore-figlio deve essere sempre mostrata nelle staffe di apertura e chiusura sui tag. Quando si convalidano i tag o consentono designazioni booleane, gli attributi forniscono ulteriori istruzioni.