Python XML Parser Tutorial: leggi l'esempio di file xml (Minidom, ElementTree)

Sommario:

Anonim

Cos'è l'XML?

XML è l'acronimo di eXtensible Markup Language. È stato progettato per archiviare e trasportare piccole e medie quantità di dati ed è ampiamente utilizzato per la condivisione di informazioni strutturate.

Python consente di analizzare e modificare il documento XML. Per analizzare il documento XML è necessario disporre dell'intero documento XML in memoria. In questo tutorial, vedremo come possiamo usare la classe minidom XML in Python per caricare e analizzare il file XML.

In questo tutorial impareremo-

  • Come analizzare XML utilizzando minidom
  • Come creare XML Node
  • Come analizzare XML utilizzando ElementTree

Come analizzare XML utilizzando minidom

Abbiamo creato un file XML di esempio che analizzeremo.

Passaggio 1) All'interno del file, possiamo vedere nome, cognome, casa e l'area di competenza (SQL, Python, Testing e Business)

Passaggio 2) Dopo aver analizzato il documento, stamperemo il "nome nodo" della radice del documento e il "nome tag primogenito" . 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 sui dipendenti come nome, cognome, casa, esperienza, ecc.
  • Utilizziamo la funzione di analisi sul minidom XML per caricare e analizzare il file XML
  • Abbiamo la variabile doc e doc ottiene il risultato della funzione di analisi
  • Vogliamo stampare il nome del nodo e il nome tag figlio dal file, quindi lo dichiariamo nella funzione di stampa
  • Esegui il codice: stampa il nodename (#document) dal file XML e il primo tagname figlio (impiegato) dal file XML

Nota :

Nodename e child tagname sono i nomi o le proprietà standard di un dominio XML. Nel caso in cui non si abbia familiarità con questo tipo di convenzioni di denominazione.

Passaggio 3) Possiamo anche richiamare l'elenco dei tag XML dal documento XML e stamparlo. Qui abbiamo stampato il set di competenze come SQL, Python, Testing e Business.

  • Dichiara la competenza variabile, dalla quale estrarremo tutte le competenze di nome che il dipendente ha
  • Utilizza la funzione standard dom chiamata "getElementsByTagName"
  • Questo otterrà tutti gli elementi denominati abilità
  • Dichiara il ciclo su ciascuno dei tag abilità
  • Esegui il codice: fornirà un elenco di quattro abilità

Come creare XML Node

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.

  1. È necessario codificare per aggiungere il nuovo attributo (BigData) al tag XML esistente
  2. 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 abilità per il nostro nuovo attributo "Big-data"
  • Aggiungi questo tag abilità nel documento primo figlio (dipendente)
  • Esegui il codice: il nuovo tag "big data" apparirà con l'altro elenco di competenze

Esempio di parser XML

Esempio di Python 2

import xml.dom.minidomdef main ():# usa la funzione parse () per caricare e analizzare un file XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# stampa il nodo del documento e il nome del primo tag figlioprint doc.nodeNameprint doc.firstChild.tagName# ottiene un elenco di tag XML dal documento e stampa ciascuno di essiexpertise = doc.getElementsByTagName ("expertise")print "% d expertise:"% expertise.lengthper abilità nella competenza:print skill.getAttribute ("name")# crea un nuovo tag XML e aggiungilo al documentonewexpertise = doc.createElement ("competenza")newexpertise.setAttribute ("name", "BigData")doc.firstChild.appendChild (newexpertise)Stampa " "expertise = doc.getElementsByTagName ("expertise")print "% d expertise:"% expertise.lengthper abilità nella competenza:print skill.getAttribute ("name")se nome == "__main__":principale();

Esempio di Python 3

import xml.dom.minidomdef main ():# usa la funzione parse () per caricare e analizzare un file XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# stampa il nodo del documento e il nome del primo tag figlioprint (doc.nodeName)print (doc.firstChild.tagName)# ottiene un elenco di tag XML dal documento e stampa ciascuno di essiexpertise = doc.getElementsByTagName ("expertise")print ("% d expertise:"% expertise.length)per abilità nella competenza:print (skill.getAttribute ("name"))# crea un nuovo tag XML e aggiungilo al documentonewexpertise = doc.createElement ("competenza")newexpertise.setAttribute ("name", "BigData")doc.firstChild.appendChild (newexpertise)Stampa (" ")expertise = doc.getElementsByTagName ("expertise")print ("% d expertise:"% expertise.length)per abilità nella competenza:print (skill.getAttribute ("name"))se __name__ == "__main__":principale();

Come analizzare XML utilizzando ElementTree

ElementTree è un'API per la manipolazione di XML. ElementTree è il modo più semplice per elaborare i file XML.

Stiamo utilizzando il seguente documento XML come dati di esempio:

SQLPython

Leggere XML usando ElementTree:

dobbiamo prima importare il modulo xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Ora andiamo a prendere l'elemento radice:

root = tree.getroot()

Di seguito è riportato il codice completo per la lettura dei dati XML sopra

import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)
produzione:
Expertise Data:SQLPython

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
    • Usa la funzione "parse" per analizzare il documento (doc = xml.dom.minidom.parse (nome file);
    • Chiama l'elenco dei tag XML dal documento XML utilizzando il codice (= doc.getElementsByTagName ("nome dei tag xml")
  • Per creare e aggiungere un nuovo attributo nel documento XML
    • Usa la funzione "createElement"