Exportación de una base de datos SQLite a un archivo XML en Android
Sé que esto es posible pero no estoy realmente seguro por dónde empezar. ¿Alguien ha sido capaz de lograr esto?
Gracias.
- No se puede resolver el símbolo 'R' en Android Studio: "la fusión manifiesta falló con varios errores, vea los registros"
- Submenú del menú del cajón de navegación
- Android, escucha de la casilla de verificación en XML?
- Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
- ¿Hay un equivalente a setShadowLayer al definir formas en XML en Android?
- ImageView con la altura del wrap_content muestra una foto muy flaca / recortada en lugar de una altura completa
- ¿Cómo puedo configurar una sombra en cada celda de un ListView?
- ¿Por qué el margen no funciona?
- Análisis de un archivo XML en Java para obtener una lista de nombres
- Creación de hashmap / map desde recursos XML
- ImageView src con el selector extraíble ignora el estado habilitado
- ¿Cómo hacer el borde inferior en formato XML seleccionable selector?
- Dibuja un círculo en una vista (android)
La clase DataXmlExporter
descrita en este artículo exportará un DB de SQL lite a un archivo XML.
http://www.screaming-penguin.com/node/7749
El ejemplo completo está disponible en este reporte SVN. La clase ManageData
invoca la exportación.
http://totsp.com/svn/repo/AndroidExamples/trunk/
Necesitará crear una clase de aplicación que exponga la base de datos y se haga referencia como el nombre de la aplicación en el archivo AndroidManifest.xml. A continuación, utilice ese DB como el argumento para el constructor DataXmlExporter
.
Esta es la clase de aplicación que utilizo. Ya deberías tener una clase (probablemente no denominada DatabaseHelper
) que extiende SQLiteOpenHelper
package com.billybobbain.android.someapp; import android.app.Application; import android.util.Log; public class MyApplication extends Application { public static final String APP_NAME = "SomeApp"; private DatabaseHelper dataHelper; @Override public void onCreate() { super.onCreate(); Log.d(APP_NAME, "APPLICATION onCreate"); this.dataHelper = new DatabaseHelper(this); } @Override public void onTerminate() { Log.d(APP_NAME, "APPLICATION onTerminate"); super.onTerminate(); } public DatabaseHelper getDataHelper() { return this.dataHelper; } public void setDataHelper(DatabaseHelper dataHelper) { this.dataHelper = dataHelper; } }
Echa un vistazo al código fuente aquí exportando-a-sqlite-base de datos-a-un-xml-file-in-android
El único cambio que tuve que hacer (para detener algunas advertencias de Eclipse) era cerrar un cursor en el método exportData (). Para que el código sea más portátil, también pasé el archivo XML y la ubicación como un argumento y no como un campo final declarado.
El código escribe el archivo XML en la tarjeta SD. Ahora, @mmaitlen que enumeró el código fuente en su blog no agrega ninguna característica para probar la existencia de una unidad de almacenamiento externa. Así que eso te queda por hacer.
Sin embargo, puede incrustar un código simple para probar la existencia de una tarjeta de memoria grabable con el siguiente fragmento (no probado):
sdOkToWrite = false; String sdTest = Environment.getExternalStorageState(); if (sdTest.equals(Environment.MEDIA_MOUNTED)) { sdOkToWrite = true; } else { // Here's where you can code what to do without the external storage }
La prueba para el almacenamiento externo es útil si tiene archivos grandes para crear que pueden exceder la capacidad interna.
Me pareció muy útil:
http://www.phonesdevelopers.com/1788273/
Usándolo de la siguiente manera para exportarlo a la tarjeta sd:
File sd = Environment.getExternalStorageDirectory(); String path = sd + "/" + DB_NAME + ".xml"; DatabaseDump databaseDump = new DatabaseDump(mySQLiteOpenHelperObject.getReadableDatabase(), path); databaseDump.exportData();
Por supuesto, no olvide:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- Dependencias -> No se pudo crear el complemento del tipo 'AppPlugin'
- Problema de implementación de fragmentos Android