0

在 Windows Phone 7 应用程序中,我想查询使用独立存储存储的大型 XML 文件(城市列表) 。如果我这样做,文件会被加载到内存(> 5 mo)吗?如果是这样,我还有什么其他解决方案?

编辑:

更多细节。我想使用 AutoCompleteBox (http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/),但不是使用网络服务(这是固定数据,无需在线),我想要查询文件/数据库/隔离存储...我有一个固定的城市列表。我在评论中说它是 40k,但它最终似乎更接近 1k 行。

4

3 回答 3

0

而不是为此使用隔离存储,您是否可以选择使用网络服务来代替......或者您是否为离线方法设计您的应用程序?

查询 webservice、wcf 或 json 启用的 webservice 非常简单,并且更容易维护:)

于 2010-11-17T14:32:55.790 回答
0

与其拥有一个包含所有数据的大文件,不如将其分解为许多较小的文件。(每个城市一个?)

如果需要,您可以有一个单独的文件来保留它们的索引。或者,根据文件的命名,您可以使用IsolatedStorageFile.GetFileNames获取所有文件的列表。

于 2010-11-17T14:40:12.147 回答
0

我会创建自己的文件格式,例如,使用字段之间的分隔符,每条记录一行。这样,您可以逐行读取文件,以使用以下优势填充数据结构:

  1. 无需将整个文件拉入内存
  2. 没有 XML 开销(在桌面应用程序中这可能不是问题,但在手机上下文中,5 MB 的文本文件可能会变得相当小)

愚蠢的例子:

New York City; 12345
Berlin; 25635
...

编辑:鉴于卷不是那么大,您不需要任何形式的索引或按需加载。我会按上述方式存储城市 - 每行一条记录 - 将它们加载到列表中并使用 LINQ 选择您需要的项目。这可能会很快,并使您的应用程序非常敏感。

在这种情况下,在我看来,XML 并不是完成这项工作的最佳工具。您的结构非常简单,存储在 XML 中可能会使文件大小增加一倍,这对于移动设备来说是一个问题,并且还会减慢解析速度,在这种情况下也是一个问题。

于 2010-11-17T16:06:36.690 回答