Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 15/05/15, 14:28:29
Array

[xs_avatar]
kohario88 kohario88 no está en línea
Miembro del foro
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar

Problema al escribir y leer Xml desde botones

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();

















}


(Click para mostrar/ocultar)
public void importXML(View view) {
FileInputStream fil = null;




String variablegenero = "";
String variabletitulo = "";
int variablevisualizaciones = 0;
int variablenota = 0;

try
{

fil = openFileInput("listaaa.xml");
System.out.println(1);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
System.out.println(2);
DocumentBuilder builder = factory.newDocumentBuilder();
System.out.println(3);
Document dom = builder.parse(fil);

System.out.println(4);
org.w3c.dom.Element root = dom.getDocumentElement();
System.out.println(5);
NodeList generos = root.getElementsByTagName("Genero");

System.out.println(6);
for (int i = 0; i < generos.getLength(); i++) {
System.out.println(7);

Node Genero = generos.item(i);
System.out.println(8);
NodeList datosGenero = Genero.getChildNodes();
System.out.println(9);
for (int j = 0; j < datosGenero.getLength(); j++) {
Node dentrogenero = datosGenero.item(j);
String nombrenodo = dentrogenero.getNodeName();

if (nombrenodo.equals("NombreGenero")) {
variablegenero = obtenerTexto(dentrogenero);

} else if (nombrenodo.equals("Pelicula")) {

}
Node pelicula = datosGenero.item(j);

NodeList datosPeli = pelicula.getChildNodes();

for (int z = 0; z < datosPeli.getLength(); z++) {


Node dentropeli = datosPeli.item(j);
String nombrenodopeli = dentropeli.getNodeName();
if (nombrenodopeli.equals("Titulo")) {
variabletitulo = obtenerTexto(dentrogenero);
} else if (nombrenodopeli.equals("Visualizaciones")) {
variablevisualizaciones = Integer.parseInt(obtenerTexto(dentropeli));
} else if (nombrenodopeli.equals("Nota")) {
variablevisualizaciones = Integer.parseInt(obtenerTexto(dentropeli));
}
peli nueva = new peli(variablegenero, variabletitulo, variablevisualizaciones, variablenota);
meterpeli(nueva);
}

}

}

fil.close();
}

catch(Exception ex){
Toast.makeText(getApplicationContext(), "No se puede realizar por:" +ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 06:58:07 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /