Foros del Web » Programando para Internet » Python »

Escribir en fichero XML

Estas en el tema de Escribir en fichero XML en el foro de Python en Foros del Web. Hola a todos. Acabo de empezar en el manejo de ficheros, y pase a XML,creando un codigo que me permita escribir un fichero con datos ...
  #1 (permalink)  
Antiguo 17/07/2011, 16:49
Fsg
 
Fecha de Ingreso: junio-2009
Mensajes: 155
Antigüedad: 15 años, 5 meses
Puntos: 5
Escribir en fichero XML

Hola a todos.
Acabo de empezar en el manejo de ficheros, y pase a XML,creando un codigo que me permita escribir un fichero con datos de un programa para medico donde se guardara la informacion de el paciente en el fichero.
Como iva empezando en este tipo de ficheros, solamente quiero guardar el nombre, teniendo la siguiente estructura:


<?xml version="1.0" encoding="iso-8859-1"?>
<paciente>
<informacion info="Fernando"/>
<nom>Fernando</nom>
</informacion>
</paciente>.

Quedando el codigo asi:
Código:
       
def generandoinfo(nom):
        doc = Document()
        paciente = doc.createElement("paciente")
        doc.appendChild(paciente)

        informacion = doc.createElement("informacion")
        informacion.setAttribute("info", nom)
        paciente.appendChild(informacion)


        nombre = doc.createElement("nom")
        paciente.appendChild(nombre)

        nom = doc.createTextNode(nomb)
        nombre.appendChild(nom)

        fichero = open("pacientes.xml", "w")
        doc.writexml(fichero, encoding='iso-8859-1')
        fichero.close()
Asi me genera los datos como lo plantee anteriormente; pero lo que quiero, es seguir añadiendo sin eliminar lo que ya esta escrito; suponiendo que añado otro usuario Carlos, quiero que se vea asi:

<?xml version="1.0" encoding="iso-8859-1"?>
<paciente>
<informacion info="Fernando"/>
<nom>Fernando</nom>
</informacion>
<informacion info="Carlos"/>
<nom>Carlos</nom>
</informacion>
</paciente>.

y claro, que si quiero seguir poniendo pacientes me los vaya poniendo de esa manera.

Última edición por Fsg; 17/07/2011 a las 17:00
  #2 (permalink)  
Antiguo 17/07/2011, 18:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Escribir en fichero XML

Bueno este problema lo puedes resolver de una manera mas fácil si usas una base de datos. Incluso puede ser una pequeña base de datos como sqlite3.

Ahora, si quieres hacerlo con xml puedes hacerlo de la siguiente manera:
  1. Abre tu archivo .xml
  2. Cargalo a memoria usando un parser xml. (Tu estas usando el minidom de python pero puede usar lxml o BeautifulSoup
  3. Haz los cambios que necesites hacer en memoria.
  4. Al final escribe los cambios en el archivo.
  #3 (permalink)  
Antiguo 18/07/2011, 01:39
Fsg
 
Fecha de Ingreso: junio-2009
Mensajes: 155
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Escribir en fichero XML

Cita:
Iniciado por razpeitia Ver Mensaje
Bueno este problema lo puedes resolver de una manera mas fácil si usas una base de datos. Incluso puede ser una pequeña base de datos como sqlite3.

Ahora, si quieres hacerlo con xml puedes hacerlo de la siguiente manera:
  1. Abre tu archivo .xml
  2. Cargalo a memoria usando un parser xml. (Tu estas usando el minidom de python pero puede usar lxml o BeautifulSoup
  3. Haz los cambios que necesites hacer en memoria.
  4. Al final escribe los cambios en el archivo.
Muy buena respuesta, solo una duda, te refieres a sacar toda la informaciond de xml, guardarla, modificar lo que se vaya a agregar, y volverlo a escribir?.

Vi que utiliza una sentencia similar al de escritura de ficheros convencionales, añadiendo caracteres para sobreescribir,escribir o solo lectura; ¿habra alguna manera de hacer lo que menciono utilizando escritura sin eliminar lo que hay?
Intente añadir un r+ en la linea fichero, pero me marca un error en internet explorer.

Gracias por tu respuesta como quiera lo checare.
Saludos
  #4 (permalink)  
Antiguo 18/07/2011, 10:41
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Escribir en fichero XML

Cita:
Iniciado por Fsg Ver Mensaje
Muy buena respuesta, solo una duda, te refieres a sacar toda la informaciond de xml, guardarla, modificar lo que se vaya a agregar, y volverlo a escribir?.
Si, a eso me refiero.

Cita:
Iniciado por Fsg Ver Mensaje
Vi que utiliza una sentencia similar al de escritura de ficheros convencionales, añadiendo caracteres para sobreescribir,escribir o solo lectura; ¿habra alguna manera de hacer lo que menciono utilizando escritura sin eliminar lo que hay?
Si muy probablemente quieras hacer una operación IN-PLACE en el archivo. Pero esto es costoso y tedioso.

Cita:
Iniciado por Fsg Ver Mensaje
Intente añadir un r+ en la linea fichero, pero me marca un error en internet explorer.
¿Que error te marca? Por cierto r+ sirve para leer y escribir.

Etiquetas: fichero, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:07.