Buenos dias. He hecho una aplicacion que consta de una base de datos de peliculas. queria permitir exportar esa bd a xml e importarla. tengo para ello dos botones, importar y exportar, con dos onclicks. Aqui os paso los metodos. Creo que algo esta mal puesto o que me he liado. despues de hacer el primer boton, exportar, me dice que se ha escrito con exito el xml, pero despues el otro me da error(Unespected end of document).
Echadle un ojo al codigo a ver que veis:
(Por cierto, si veis system.out.print(""); raros o toast extraños son señales para tratar de averiguar que fallaba)
(Click para mostrar/ocultar)public void exportXML(View view) {
FileOutputStream fout = null;
OutputStreamWriter dout=null;
File ruta_sd = Environment.getExternalStorageDirectory();
File f = new File(ruta_sd.getAbsolutePath(), "listaaa.txt");
f.delete();
try {
dout =
new OutputStreamWriter(
openFileOutput("listaaa.xml",
Context.MODE_PRIVATE));
StringBuilder sb = new StringBuilder();
// dout.write(sb.toString());
// dout.close();
}
catch(Exception e){
Toast.makeText(getApplicationContext(), "No se puede realizar por:" +e.getMessage(), Toast.LENGTH_LONG).show();
}
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,"administracion",null,1 );
SQLiteDatabase bd = admin.getWritableDatabase();
XmlSerializer serializer = Xml.newSerializer();
try {
StringBuilder sb = new StringBuilder();
serializer.setOutput(dout);
serializer.startDocument(null ,true);
System.out.println(2);
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
System.out.println(3);
Cursor filag = bd.rawQuery(
"select distinct'Genero' from Peliculas order by Genero", null);
System.out.println(4);
serializer.startTag(null, "ListaPeliculas");
System.out.println(5);
if (filag.moveToFirst()) {
System.out.println(6+"if");
while (filag.moveToNext()) {
serializer.startTag(null, "Genero");
serializer.startTag(null, "NombreGenero");
serializer.text(filag.getString(0));
serializer.endTag(null, "NombreGenero");
Cursor filap = bd.rawQuery("select Titulo,Visualizaciones,Nota from Peliculas order by Titulo", null);
if (filap.moveToFirst()) {
while (filap.moveToNext()) {
serializer.startTag(null, "Pelicula");
serializer.startTag(null, "Titulo");
serializer.text(filap.getString(0));
serializer.endTag(null, "Titulo");
serializer.startTag(null, "Visualizaciones");
serializer.text(String.valueOf(filap.getInt(1)));
serializer.endTag(null, "Visualizaciones");
serializer.startTag(null, "Nota");
serializer.text(String.valueOf(filap.getInt(2)));
serializer.endTag(null, "Nota");
serializer.endTag(null, "Pelicula");
}
}
serializer.endTag(null, "Genero");
}
serializer.endTag(null, "ListaPeliculas");
serializer.endDocument();
dout.write(sb.toString());
serializer.flush();
dout.write(sb.toString());
dout.close();
} else {
System.out.println(6+"else");
}
bd.close();
Toast.makeText(getApplicationContext(), "Se ha escrito el archivo", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(),"No se ha podido escribir"+e.getMessage(), Toast.LENGTH_LONG).show();
}
}
public class peli{
String Titulo;
String Genero;
boolean vista;
int nota;
int visualiza;
public peli(){
}
public peli(String Titulo,String Genero,int nota, int visualiza){
this.Titulo=Titulo;
this.Genero=Genero;
this.nota=nota;
this.visualiza=visualiza;
boolean vista;
if(visualiza==0){
vista=false;
}
else{
vista=true;
}
}
public String getTitulo(){
return Titulo;
}
public String getGenero(){
return Genero;
}
public int getVisualiza(){
return visualiza;
}
public boolean getVista(){
return vista;
}
public int getnot(){
return nota;
}
}
public void meterpeli(peli pelicula){
String T=pelicula.getTitulo();
String G=pelicula.getGenero();
int Visu=pelicula.getVisualiza();
int nota=pelicula.getnot();
boolean vist=pelicula.getVista();
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
ContentValues registro = new ContentValues();
registro.put("Titulo", T);
registro.put("Genero", G);
registro.put("Nota", nota);
registro.put("Vista", vist);
registro.put("Visualizaciones", Visu);
bd.insert("Peliculas", null, registro);
bd.close();
}