如何在C#中进行XML反序列化后重构对象层次结构/引用

时间:2011-11-23 16:40:04

标签: c# serialization xna xml-serialization deserialization

我正在建立一个游戏项目,其中有简单的容器对象,可以有孩子。我不知何故需要将游戏的“状态”和serializa保存为XML。然后我将简单地通过序列化XML来加载游戏,但我需要保存对象,链接等的状态。实现这一目标的最佳实践是什么?为了证明,请考虑以下几点:

GameObject Bag (ID 1234)
--------------
Sword (object ID 5678, some reference to another object in game: 0987)

等等。我在对象之间有游戏内引用,我需要在保存/加载到XML时保留这种状态。在简单的场景中我对XML序列化本身没有任何问题,但我不知道如何保留对象之间的“链接”。

2 个答案:

答案 0 :(得分:2)

使用支持引用的序列化程序。例如,DatacontractSerializer可以做到这一点。 对于xml,您可以在DataContractSerializer中启用它 http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx

答案 1 :(得分:1)

我的手中没有真实的证据,但有一位我的朋友使用YAML进行树序列化,并且非常满意。

在本文的最后,您还可以找到对可用.NET库的引用。

希望这有帮助。