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.
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);
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
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)
È 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.