Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2011, 05:17
adat21
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 9
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Duda con un ejercicio pasar datos xml en diccionario

Me plantean este ejercio y me gustaria saber si voy bien encaminado:
Diseñad e implementáis una función que, dado un nombre de fichero XML que contenga los datos de los o modelos de piezas en el formato mencionado anteriormente, lo lea y devuelva una estructura tipo "diccionario con listas" para almacenar las piezas, llenada con la información recopilada o el fichero. En caso de que la estructura del fichero XML no sea correcta tenéis que proceder de la siguiente manera:
• En caso de que lo etiqueta o lo etiqueta o que alguna de las etiquetas que conforman la información de un modelo de pieza (<peca>, </peca>, <nom>, </nom>, <mida>, </mida>, <pes> o </pes>) no aparezcan o estén mal escritas, tenéis que parar la función y, en vez de devolver la estructura, tenéis que devolver algún valor que indique la imposibilidad de leer el fichero.

Aki os pongo lo que he echo:
Código python:
Ver original
  1. import string
  2.  
  3. def llegir(arxiu):
  4.  
  5.     obre_arxiu=open(arxiu,"r")
  6.     llista=obre_arxiu.readlines()
  7.     print llista
  8.        
  9.     if llista[0]=="<peces>\n" and llista[-2]=="</peces>\n":
  10.         dicc={}
  11.         llista_peca=[]
  12.         for linia in llista:
  13.             if "<nom>" and "</nom>\n" in linia:
  14.                 peca=linia[5:-7]
  15.                 peca=string.strip(peca)
  16.      
  17.             elif "<mida>" and "</mida>\n" in linia:
  18.                 mida=linia[6:-8]
  19.                 mida=string.strip(mida)
  20.            
  21.             elif "<pes>" and "</pes>\n" in linia:
  22.                 pes=linia[5:-7]
  23.                 pes=string.strip(pes)
  24.                 dicc[peca]=mida,pes
  25.        
  26.            
  27.             else:
  28.                 pass
  29.        
  30.                                  
  31.     else:
  32.         pass
  33.  
  34.     return dicc

Última edición por AlvaroG; 11/01/2011 a las 05:34