在Android中将SQLite数据库导出到XML文件

我知道这是可能的,但我不确定从哪里开始。 有没有人能够实现这一目标?

谢谢。

  • android.view.inflateexception二进制xml文件行#1错误膨胀类android.widget.relativeLayout
  • 如何使RatingBar显示五颗星
  • Android XML:RuntimeException:无法parsing索引6处的属性
  • @id和@ + id有什么区别?
  • Android Lint报告重复
  • 如何将TODO注释放在xml中?
  • 使用SAX Parser,获取属性的值
  • Hello World Android应用程序,错误:workspace \ appcompat_v7 \ res \ values-v21 \ styles_base.xml找不到与给定名称匹配的资源
  • 本文中介绍的DataXmlExporter类将把SQL精简版数据库导出到XML文件。

    http://www.screaming-penguin.com/node/7749

    完整的例子可以在这个SVN回购。 ManageData类调用导出。

    http://totsp.com/svn/repo/AndroidExamples/trunk/

    您将需要创build一个公开数据库的应用程序类,并将其作为AndroidManifest.xml文件中的应用程序名称引用。 然后使用该数据库作为DataXmlExporter构造函数的参数。

    这是我使用的应用程序类。 你应该已经有了一个扩展SQLiteOpenHelper的类(可能不叫DatabaseHelper

     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; } } 

    看看这里的源代码exporting-a-sqlite-database-to-an-xml-file-in-android

    我必须做的唯一更改(停止一些Eclipse警告)是closuresexportData()方法中的游标。 为了使代码更具可移植性,我还将XML文件和位置作为parameter passing,而不是作为声明的最终字段。

    该代码将XML文件写入SD卡。 现在,在他的博客中列出源代码的@mmaitlen没有添加任何function来testing是否存在外部存储单元。 所以这是留给你去做的。

    但是,您可以embedded一些简单的代码来testing是否存在可写入的存储卡,其代码如下(未经testing):

      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 } 

    如果您要创build超过内部容量的大文件,则testing外部存储是非常有用的。

    我发现这非常有帮助:

    http://www.phonesdevelopers.com/1788273/

    使用以下方法将其导出到SD卡:

     File sd = Environment.getExternalStorageDirectory(); String path = sd + "/" + DB_NAME + ".xml"; DatabaseDump databaseDump = new DatabaseDump(mySQLiteOpenHelperObject.getReadableDatabase(), path); databaseDump.exportData(); 

    当然不要忘记:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>