gpt4 book ai didi

c# - 加载一部分 XML

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:39 24 4
gpt4 key购买 nike

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

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

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

有没有人有解决这个问题的好方法?也许可以对文档执行二分搜索以找到特定级别,然后只解析该级别,但我不确定在使用 XML 时这样做有多容易?

最佳答案

您刚刚发现了 XML 在默认情况下是一种非常糟糕的存储格式的另一个原因。问题是您需要阅读您感兴趣的那一行之前的所有内容,因为您必须解析和理解文件的结构。

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

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

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

关于c# - 加载一部分 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com