2011-06-14 29 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