Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 15/05/15, 14:28:29
Avatar de kohario88
kohario88 kohario88 no está en línea
Miembro del foro
Mensajes: 79
 
Fecha de registro: abr 2015
Mensajes: 79
Tu operador: Movistar
Mencionado: 3 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 08:42:45 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007