Esempi di Python Processing XML

January 22

Python utilizza il Document Object Model per memorizzare e manipolare gli elementi XML. Si analizza automaticamente il codice XML e crea un oggetto Document per modellarlo, che contiene i nodi XML. La libreria XML può poi scorrere il documento per trovare elementi e attributi diversi. È necessario importare la libreria "xml.dom.minidom" al fine di accedere alla libreria di elaborazione XML DOM di Python.

L'accesso e lettura di un file XML

libreria XML di Python può analizzare automaticamente i file di testo XML o stringhe di testo che rappresentano un documento XML. Ecco un esempio di come analizzare un file di testo XML e memorizzare il risultato come un oggetto Python documento:

xmlFile = open ( "sample.xml")
xmlDocument = xml.dom.minidom.parse (xmlFile)

Se si vuole analizzare una stringa di XML, è necessario la funzione "parseString".

xmlString = "<parentNode> <childnode /> <childnode /> <differentchildnode> Un altro nodo </ differentchildnode> </ parentNode>"
xmlDocument = xml.dom.minidom.parseString (xmlString);

Accesso Element Nodi e Nodi figlio

elementi XML sono rappresentati come nodi. Per accedere a un elemento nel documento XML, è necessario cercare per nome con il metodo "getElementsByTagName," ad esempio:

searchResults = getElementsByTagName ( "ExampleNode")

Questa riga di codice restituisce un NodeList. Per ottenere un singolo nodo elemento, si può semplicemente chiamare:

myNode = searchResults [0]

I nodi possono contenere nodi figlio. È possibile ottenere un elenco di nodi figli dato un riferimento a un nodo padre, ad esempio:

myChildNodes = myNode.childNodes

Dati e attributi

Per accedere ai dati contenuti nel tag di apertura e di chiusura di un elemento, è necessario accedere al campo "Dati" dell'oggetto nodo. Per esempio, se un nodo denominato "myNode" rappresentato il testo XML "<ExampleNode attr1 =" 1 "attr2 =" 2 "> testodiesempio </ ExampleNode>" in un documento, allora si potrebbe estrarre la parola "testodiesempio" facendo riferimento a " myNode.data. " Per accedere gli attributi di tale nodo, si avrebbe bisogno di accedere prima alla NamedNodeMap degli attributi come segue:

attrlist = myNode.attributes

Poi da quella lista, di estrarre i nomi ei valori degli attributi:

myList = []
per i in range (attrList.length): myList.append (attrList.item (i) .name + '=' + attrList.item (i) .value)
stampa "," .join (myList)

Scrittura di codice XML

È possibile scrivere un oggetto Node a qualsiasi oggetto "scrivibile" utilizzando la funzione "WriteXml." Ciò include i file scrivibili. Un esempio è il seguente:

destinationfile = open ( "samplewrite.xml", "w")
doc.writexml (destinationfile)
destinationFile.close ()

È inoltre possibile stampare il documento XML come una stringa utilizzando la funzione di "toxml" o "toprettyxml," ad esempio:

doc.toxml print ()

o

doc.toprettyxml print ()

La funzione "toprettyxml" utilizza spazi e rientri per rendere il codice XML più leggibile per gli esseri umani.