加载一部分XML

时间:2014-02-06 16:28:00

标签: c# xml loading

我目前正在开发基于Mobile C#的RPG,它进展顺利,但我只想考虑如何优化数据加载。

目前游戏大约有20个左右的单位,每个单位有50个不同的等级,每个等级都有不同的统计数据。这些统计信息存储在XML文档中,按单位分组。所以Unit1.xml包含level1,level 2,level 3 ... .level 50 Unit的所有统计信息,它被解析,结果在第一次在播放会话中使用Unit 1时缓存到字典中。

我的问题是,这看起来像是大规模的矫枉过正,这个文档长达数百行,即使我可能只需要说“5级单位1”,解析所有50个级别似乎也很疯狂。显然,我可以优化的一种方法是将文档拆分为50个不同的文档,每个文档都包含特定级别的数据,但这看起来有点疯狂。

有没有人有办法解决这个问题?也许可以在doc上执行二进制搜索以找到特定级别,然后只能解析它,尽管我不确定使用XML时会有多容易?

1 个答案:

答案 0 :(得分:0)

您刚刚发现了XML默认为非常糟糕的存储格式的另一个原因。问题是你需要阅读你感兴趣的那一行,因为你必须解析并理解文件的结构。

改善这一点的唯一方法是给自己提示,例如。保存每个行开始然后向前跳跃的索引。但是,这不再是XML,让.NET读取这些片段可能会很棘手。

因此,如果您无法将所有已解析的XML保留在内存中,并且您不想分离XML文件,那么您可以使用一种技巧来保存您想要的每个实体作为单独的XML文档(带声明,根元素等),并将它们保存在一个文件中,以及每个文档实际开始的位置索引。

当然,这仅在您自动生成XML时才有用。它不再是有效的XML,这意味着没有其他人可以读取或写入它。