这更像是关于Android的整体架构问题,我很好奇社区认为这种类型的努力的最佳实践。我正在开发一个Android应用程序,它加载存储在设备上的xml文件。我的第一个问题是,当你在Android应用程序范围内处理格式化的xml文件时,应用程序的主要部分是“浏览”xml的节点,是否更加“加载” xml“(不确定这个术语是什么)进入内存并以这种方式执行?或者更聪明的做法是将xml写入内部数据库(仍然习惯于整个SQL Lite概念),然后以这种方式浏览数据?后者似乎是一种迂回的方式,但我试图在这里理解核心概念。
这让我想到了第二个问题。如果我要弄清楚这个XML中的数据是如何“流动”的,那么就我对Android的了解而言,我脑子里的直接答案就是一堆ListViews。节点1有2个选择。这会将两个选项加载到ListView中。当您单击第一个节点时,它将转到xml中相应的子节点,该子节点有四个选项。我创建了一个有4个选项的ListView。等等。
这是否符合逻辑?我看错了吗?是否有更好的方法来使用更有意义的不同对象?任何已经为我做过比较的事情的参考也会有所帮助。谢谢!
答案 0 :(得分:1)
不要将XML转换为sqlite数据库。只需在内存中解析它。
就您的其他问题而言,我有一项活动延伸至ListActivity
。覆盖onListItemClick()
,并使用某种指向要浏览的下一个元素的指针再次启动您的活动。
这样做会使活动堆栈在用户按下后退按钮时表现良好。
答案 1 :(得分:1)
很大程度上取决于您拥有的具体用例和XML文件的大小。对于大多数部分,我认为除非您已经拥有由XML表示并适合持久性的数据模型,否则您将很难将XML放入数据库中。你肯定不希望用随机XML来做。
如果你有小XML,你总是可以使用DOM将它加载到内存中。这将使其易于导航。但是对于大型XML,您需要考虑一些流API(Stax)并直接从文件中读取。
答案 2 :(得分:0)
SQLite是关系数据库,因此只有在需要对数据执行关系操作(例如选择/更新/分组等)时,才需要在数据库中存储来自xml的数据。如果您只需要通过DOM并执行某些操作(例如计算特定节点),我相信您不应该将xml解析为DB。