Android通過xml檔案配置資料庫

2021-09-06 23:04:00 字數 2141 閱讀 2011

之前一段時間自己封裝了兩個資料庫,乙個是orm資料庫,另乙個是事件流資料庫,專案相應的位址如下:

orm資料庫:

事件流資料庫:

有興趣的人可以上去看看。

如果要講這兩個專案,一篇文章的篇幅是放不下的,所以就只是每篇都只講一點點。

兩個自己寫的資料庫都有乙個必須用到的地方:在xml檔案中配置資料庫。

利用檔案配置資料庫在很多語言的框架中都有提供,因為這是乙個很方便的特性:只要在乙個地方對資料庫進行配置,不用牽扯到具體的**,可維護性更高。

在android中,能想到的就是利用xml檔案。

理論上,這個xml檔案可以放在任何資料夾,但最好是放在assets資料夾內,因為這個資料夾內的檔案是唯讀的,像是這種配置性檔案當然是唯讀的。

現在我們就來規定這個xml檔案內的東西。

我們在assets資料夾內建立乙個database.xml檔案,該檔案就是資料庫的配置檔案。

xml檔案可以允許我們自己定義標籤,只要我們有對應的xml解析器就行。

對於資料庫的配置,常見的有三種:資料庫名字,版本和表。

database.xml檔案的內容如下:

<?

xml version="1.0" encoding="utf-8"

?>

<

database

>

<

dbname

value

="zwb.db"

>

dbname

>

<

version

value

="1"

>

version

>

<

list

>

<

class

="com.zwb.args.dbpratice.model.status"

>

>

<

class

="com.zwb.args.dbpratice.model.user"

>

>

list

>

database

>

現在我們有了自己的xml檔案,可以開始編寫xml解析器了。

首先是讀取assets下的database.xml檔案。

android提供了assets資料夾的讀取方法:

inputstream in = null

;

try

catch

(ioexception e)

android 中讀取系統檔案或者資源的時候,都可以通過getresources方法獲取到resources物件,然後通過這個物件獲取到相應的資源。

得到database.xml檔案的inputstream之後,就可以開始讀取檔案內容了。

讀取xml檔案可以利用xmlpullparse***ctory這個類。

xmlpullparse***ctory factory;

try

else

if (tag.equals("version"))

else

tableset.add(xpp.getattributevalue(0));

}break

;

case

xmlpullparser.end_tag:

break

;

default

:

break

; }

//獲得下乙個節點的資訊

evttype =xpp.next();}}

catch

(exception e)

finally

我們前面定義的xml檔案是dom格式的xml檔案,所以需要檢驗該xml檔案是否合法,否則就可能發生解析失敗。檢驗的方法就是設定setnamespaceaware為true。

現在我們已經解析xml檔案,並將相應的節點資訊放在tablelist裡面。

後面會講如何通過這些解析出來的資訊構建資料庫資訊。

Android之用XML檔案對程式進行配置

有些程式可以配置,用來讓使用者設定有些自定義的偏好 可以通過sharedpreference來儲存程式執行時使用者的狀態以及使用者輸入過的資料,當然我們也可以通過一些自定義的內容來讓使用者對該程式進行設定 使用者設子介面的呼叫 public class preferencesfromxml exte...

Android通過XML來定義Menu

直接在 中新增選單項,給選單項分組等,這是比較傳統的做法,它存在著一些不足。比如說,為了響應每個選單項,我們需要用常量來儲存每個選單項的id等。為此,android提供了一種更好的方式,就是把menu也定義為應用程式的資源,通過android對資源的本地支援,使我們可以更方便地實現選單的建立與響應。...

android解析XML檔案

對於config.xml 1.dom方式 public void getbydom catch saxexception ex catch ioexception ex catch parserconfigurationexception ex 2.pull方式 public void getbyp...