Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2013, 08:46
Onedy
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 2
Se vacía fichero XML al abrir app

Buenas,

Tengo un problema que por más que piense y busque, no doy con la solución.

Estoy haciendo una app que genera un fichero XML antes de ponerse en pausa. Para ello uso XML.newSerializer() como mostraré a continuación. Tras cerrar la app, miro con un explorador de archivos el fichero y todo está perfecto, cada etiqueta en su sitio, todo cerrado bien, etc. Pero al volver a abrir la app, el fichero se queda casi vacío, sólo con un pobre "<posiciones />". (la app no vuelve a abrir/tocar el fichero después de generarlo)
Código Java:
Ver original
  1. //recibe HashMap<String, Coordenadas> c
  2. FileOutputStream fout = actividad.openFileOutput(nombreFichero, Activity.MODE_PRIVATE);
  3. XmlSerializer serializer = Xml.newSerializer();
  4. serializer.setOutput(fout, "UTF-8");
  5. serializer.startDocument(null, true);
  6. serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
  7. serializer.startTag(null, "raiz");
  8. for(String nombre: c.keySet()){
  9.   serializer.startTag(null, "coordenadas");
  10.   serializer.attribute(null, "nombre", nombre);
  11.   serializer.startTag(null, "latitud");           serializer.text(Long.toString(Double.doubleToRawLongBits(c.get(nombre).getLatitud())));
  12.   serializer.endTag(null, "latitud");
  13.   serializer.startTag(null, "longitud");
  14.   serializer.text(Long.toString(Double.doubleToRawLongBits(c.get(nombre).getLongitud())));
  15.   serializer.endTag(null, "longitud");
  16.   serializer.endTag(null, "coordenadas");
  17. }
  18. serializer.endTag(null, "raiz");
  19. serializer.endDocument();
  20. serializer.flush();

Todo esta en try{}...catch(Exception e){ ... Toast.makeText(...e.getMessage()...)...}finally{ fout.close() } y NO salta ninguna excepción.

¿Tiene alguien alguna idea de lo que está pasando y cómo se puede resolver?

Muchas gracias de antemano