2011-06-14 78 views
1

這更多的是關於Android的整體架構問題,我很好奇社區認爲這是最佳實踐。我正在開發一個Android應用程序,該應用程序加載存儲在設備上的xml文件。我的第一個問題是,當您在Android應用程序的範圍內處理格式化的xml文件時,應用程序的主要目的是通過xml的節點對「瀏覽」進行排序,「加載xml「(不是真的知道這個詞是什麼)並且這樣做?或者更聰明的做法是將XML寫入內部數據庫(仍然習慣於整個SQL Lite概念),然後以這種方式瀏覽數據?後者似乎是一種迂迴的方式,但我試圖在這裏理解核心概念。Android應用程序體系結構 - 瀏覽xml文件

這使我想到了第二個問題。如果我要弄清楚這個XML「流動」的數據,就我所瞭解的Android而言,我腦海中的即時答案就是一堆ListView。節點1有2個選擇。這將兩個選項加載到ListView中。當你點擊第一個節點時,它會轉到xml中相應的子節點,它有四個選項。我創建了一個有4個選擇的ListView。等等等等。

這是否合乎邏輯?我看到的方法錯了嗎?有沒有更好的方式來使用更有意義的不同對象?任何對已經完成的事情的引用都會對我有幫助。謝謝!!

回答

1

不要將XML轉換爲sqlite數據庫。只是解析它在內存中。

至於你的其他問題,我會有一個活動,從ListActivity延伸。覆蓋onListItemClick()並使其再次啓動您的活動,並使用某種指向下一個要瀏覽的元素的指針。

這樣做會使活動堆棧在用戶按下後退按鈕時表現良好。

+0

這對我來說是有道理的,而且是我認爲的......我只是對操作系統知之甚少,還不知道是否有更好的控件可用於此目的。 – optionsix 2011-06-14 20:45:22

0

SQLite是關係數據庫,所以只有在需要對數據執行關係操作時(例如選擇/更新/分組等),才需要在數據庫中存儲xml中的數據。如果您只需要通過DOM並執行某些操作(例如計算特定節點),我相信您不應該將xml解析爲數據庫。

1

很大程度上取決於您具體的使用情況和XML文件的大小。對於大多數部分,我認爲除非您已經擁有由XML表示的數據模型,並且適合持久性,否則您將很難將XML放入數據庫。你當然不想用隨機XML來做。

如果您有小XML,您可以隨時使用DOM將其加載到內存中。這將使其易於瀏覽。但對於大型XML,您需要考慮一些流API(Stax)並直接從文件中讀取。

+0

有趣的是,我沒有意識到Stax,但會研究它。到目前爲止,xml文件相對較小,但它可能很適合規劃最大的共同標準。我將在此問題上進行一些搜索,但是您是否看到過將任何好的教程或示例代碼加載到DOM中然後瀏覽節點? – optionsix 2011-06-14 20:44:24