Re: leer archivo xml como un arbol (python)



On Mon, 2006-12-18 at 18:09 -0300, Alejandro Valdes Jimenez wrote:
> Estimados...
> 
> ¿alguien ha hecho esto?  tengo un rchivo en xml con varios elementos,
> los cuales pueden anidarse a si mismos...
> 

Pues ya he descubierto como hacerlo... por si a alguien le sirve.. aqui
va. Lo interesante es la llamada recursiva para recorrer el arbol, lo
demas son propias de la aplicacion.


....
# for reader document
from xml.dom import minidom

def process_device (self,dev,parent):

  if dev.nodeName == "device":
    name =  dev.getElementsByTagName("name")[0]
    ip =  dev.getElementsByTagName("ip")[0]
    cmts =  dev.getElementsByTagName("cmts")[0]
    type =  dev.getElementsByTagName("type")[0]
    childs = dev.getElementsByTagName("device")

    type_id = self.getText(type.childNodes)
    name_type, pix  = models.get_data_of_device_from_key(self,type_id)

    newiter = self.treestore.append(parent)

    models.insert_new_item (self.treestore,
                    newiter,
                    pix,
                    self.getText(name.childNodes),
                    self.getText(ip.childNodes),
                    name_type,
                    self.pixbuf_warning,
                    self.getText(cmts.childNodes).strip(),
                    type_id)
    
    for n in dev.childNodes:
      if n.nodeType == 1:  # is ELEMENT?
        self.process_device (n,newiter)



.....
# build a DOM tree from the file
dom = minidom.parse(filename)

root = dom.firstChild

for n in root.childNodes:
  if n.nodeType == 1:  # is ELEMENT?
  self.process_device (n,None)

dom.unlink()
....


> he visto bastantes ejemplos pero no me han servido para lo que yo
> quiero.
> 
> no he podido recorrer correctamente el arbol de manera de dejarlo
> reflejado en un treeview.
> 
> Saludos!
> 
-- 
Alejandro Valdés Jiménez.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (56) (71) 200408




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]