0

简而言之,我从 XML 解析了这样的数据:

root ---- date1 ---- time 1 ----item 1 ---- prop 1 --- a
       |          |          |           |         |-- b
       |          |          |           |    
       |          |          |           |- prop 2
       |          |          |    
       |          |          |--item 2
       |          |
       |          |- time 2
       |
       |
       |- date2 ---- time 1

每个item都有几个属性(比如 item1 有 prop1 和 prop2)

每个time都有几个items

每个date都有几个times

root 有几个dates 作为它的孩子

我想使用这些数据:

能够向用户显示每个日期内的内容。例如,如果date1是当前日期,则显示每个用户item按 排序time,只显示这些数据类型,如 Android 谷歌日历的议程视图。

那么请问我应该使用什么数据结构来实现这一点?

我认为可能的候选人是:

  1. 嵌套的 HashMap,比如HashMap<Time, HashMap<item1, HashMap<prop1, a>>>;
  2. SQL数据库,为每个创建表time,然后放入item行,prop

这个应用程序在存储数据时不严格保持树状结构是完全可以的,所以我更喜欢SQL数据库,请问各位大神有没有更好的解决方案?

此应用程序将在 Android 上运行,感谢您的帮助。

更新

我对数据库结构的想法:

为每个日期创建数据库表;

然后在每个数据库表中:

        time    prop1    prop2    prop3
item1
item2
...

然后也许以后我可以通过使用来检索items基础。selecttime

UPDATE2 我需要为日期创建表,因为某些项目可能是相同的。请想象一下,您在一周的不同日子召开了两次相同的会议。我不能为每个创建表,item因为从原始 XML 中提取这些信息比创建date表并将它们放入数据库中很困难。

4

2 回答 2

0

我的方法是创建一个 DAO(数据访问对象),负责获取解析 XML 产生的对象并将所有数据正确存储在 SQLite 上。DAO 还将负责从 SQLite 数据重新制作对象。

请记住,这个翻译不会像你提到的那么容易。您说“每次创建表,然后将项目放在行中,将道具放在列中”。这不是标准的数据库模型,因为通常您不会为给定实体的每个实例创建一个表。

首先分析您拥有哪些实体(例如,日期、时间、项目),然后分析它们之间的关系(例如,一个数据包含一个或多个时间,一个时间包含一个或多个项目等)。通常每个实体都将成为您数据库上的一个表,并且关系将进入现有表(作为对其他表的引用)或者它们将拥有自己的表。您可以在此处阅读有关此方法的更多信息:http ://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model

于 2012-11-14T10:16:17.977 回答
0

为所有人创建一个表,并为我们创建一个日期列以根据需要检索数据。您不需要像为所有日期创建表格那样复杂。

于 2012-11-14T10:47:04.613 回答