Python R2


Agregar un Nodo a un XML


Para agregar un nodo a un XML es simple solo tendremos que seguir en siguiente algoritmo.

  • Crear un nodo elemento
  • Crear un nodo texto (si lo requiere)
  • Agregarle el nodo texto al nodo elemento creado
  • Agregar el nodo elemento creado a algún nodo del documento xml

Observemos en el siguiente ejemplo como lo hace

#!/usr/bin/python
# Nombre : xml3.py
import xml.dom.minidom
xmldoc = xml.dom.minidom.parse("./xml1.xml")

for n in  xmldoc.childNodes :
    print n.tagName
    for contacto in n.childNodes:
        if contacto.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:
            nodo = xmldoc.createElement("ElemntoAgrgado")
            nodo.appendChild(xmldoc.createTextNode("Agregue un textnode"))
            contacto.appendChild(nodo)
        for registro in contacto.childNodes:
            if registro.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:
                print registro.nodeName ,"-" , registro.firstChild.data
                registro.firstChild.data =  registro.firstChild.data

fp = open("./xml2.xml", 'w')

xmldoc.writexml(fp)
fp.close()

Crea el nodo elemento por medio del método “createElement” y luego le agrega el nodo texto, creado por medio de “createTextNode”, con el método “appendChild”. Y por último también con el metodo appendChild lo agrega al nodo contacto del documento.
Para guardar los cambios crea un archivo y lo guarda por medio del método “writexml”

Gracias a la aclaracion de Alejandro J. Cura decidi rearmar el ejemplo anterior con la libreria “elementtree”.

#!/usr/bin/python
# Nombre : xml4.py
from elementtree.ElementTree import  SubElement
from elementtree import ElementTree

xmlFp = open("xml1.xml", "r")
xmldoc = ElementTree.parse(xmlFp)
agenda = xmldoc.getroot()

print dir(agenda)
print agenda.text
for c in agenda.getiterator("contacto"):
    nodo = SubElement(c, "ElemntoAgrgado")
    nodo.text = "Agregue un textnode"
    for registro in c.getiterator():
        if registro != c:print registro.tag ,"-", registro.text

xmldoc.write(file="./xml2.xml")

Gracias Alejandro.
y todas sus ideas son bien recibidas!!!!!!!!!!!

Anuncios

Una respuesta to 'Agregar un Nodo a un XML'

Subscribe to comments with RSS o TrackBack to 'Agregar un Nodo a un XML'.


  1. Hola, muy bueno tu sitio.

    Me gustaría aclarar que xml.dom.minidom es una forma de usar xml parecida a las de otros lenguajes, pero no es la forma recomendada de manejar xml en python.

    Elementtree es lo recomendado (xml.etree), que tiene un api mucho más sencilla y pythónica, y además es parte de la biblioteca standard desde la versión 2.5 de python (y se puede instalar en versiones de python anteriores)

    Más info, por acá: http://effbot.org/zone/element.htm

    saludos,

    alecu


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: