-
Ejemplos de Procesamiento de XML Python
-
Python utiliza el modelo de objetos de documento para almacenar y manipular elementos XML. Se analiza automáticamente el código XML y crea un objeto de documento para modelarlo, que contiene nodos XML. La biblioteca XML a continuación, puede desplazarse por el documento de encontrar diferentes elementos y atributos. Debe importar la biblioteca "xml.dom.minidom" con el fin de acceder a la biblioteca de procesamiento de XML DOM de Python.
Acceder y leer un archivo XML
biblioteca de Python XML puede analizar automáticamente los archivos de texto XML o cadenas de texto que representan un documento XML. Aquí está un ejemplo de cómo analizar un archivo XML de texto y guardar el resultado como un objeto de documento de Python:
xmlFile = open ( "sample.xml")
xmlDocument = xml.dom.minidom.parse (xmlFile)Si desea analizar una cadena de XML, lo que necesita la función "parseString".
xmlString = "<parentNode> <nodo hijo /> <nodo hijo /> <differentchildnode> Un nodo diferente </ differentchildnode> </ parentNode>"
xmlDocument = xml.dom.minidom.parseString (xmlString);Acceso a Element nodos y nodos secundarios
elementos XML se representan como nodos. Para acceder a un elemento en el documento XML, debe buscar por su nombre con el método "getElementsByTagName", por ejemplo:
searchResults = getElementsByTagName ( "ExampleNode")
Esta línea de código devuelve un NodeList. Para obtener un único nodo elemento, sólo tiene que llamar:
miNodo = searchResults [0]
Los nodos pueden contener nodos secundarios. Usted puede obtener una lista de nodos secundarios dado una referencia a un nodo padre, por ejemplo:
myChildNodes = myNode.childNodes
Datos y atributos
Para acceder a los datos contenidos en las etiquetas de apertura y cierre de un elemento, debe tener acceso al campo "datos" del objeto de nodo. Por ejemplo, si un nodo denominado "miNodo" representado el texto XML "<ExampleNode attr1 =" 1 "attr2 =" 2 "> sampletext </ ExampleNode>" en un documento, entonces se podría extraer la palabra "sampletext" haciendo referencia a " myNode.data ". Para acceder a los atributos de ese nodo, lo que se necesita para acceder a la primera NamedNodeMap de los atributos de la siguiente manera:
listadeatributos = myNode.attributes
Luego de esa lista, de extraer los nombres y valores de los atributos:
myList = []
for i in range (attrList.length): myList.append (attrList.item (i) .name + '=' + attrList.item (i) .value)
print ";" .join (miLista)Escribir código XML
Se puede escribir un objeto de nodo a cualquier objeto "puede escribir" usando la función "WriteXml." Esto incluye los permisos de escritura. Un ejemplo es el siguiente:
destinationFile = open ( "samplewrite.xml", "w")
doc.writexml (destinationFile)
destinationFile.close ()También puede imprimir el documento XML como una cadena utilizando la función "toxml" o "toprettyxml", por ejemplo:
doc.toxml de impresión ()
o
doc.toprettyxml de impresión ()
La función "toprettyxml" utiliza espacios y guiones para hacer más legible el código XML para los seres humanos.