C# : xml serialization of nodes with cyclic links

标签 c# xml serialization hyperlink cyclic-dependency

我有一个像这样的节点类:

class Node {
    IEnumerable<Node> inputs;
}

它基本上定义了一个简单的图形。 我想将我的图形序列化为人类可读的形式,所以通常我会说 xml 是可行的方法。 但是 XML 并没有考虑到循环依赖性:)

那么 - 序列化图表的最佳方式是什么?

我可以想到几种方法:

  • 放弃 XML,创建我自己的格式。
  • 使用 XML,用唯一 ID 标记每个节点,将连接列表与节点分开存储并在加载后解析

但我认为其他人以前一定也遇到过同样的问题,所以可能会有一些更好的选择。 有谁知道可靠的方法吗?

最佳答案

对于 xml,我会采用 id 方法(更改 DTO 模型,使其不是循环的)。

请注意 DataContractSerializer可以通过为重载构造函数中的 preserveObjectReferences 选项传入 true 来自动支持循环对象图;它不会像 XmlSerializer 输出那么简单,但它仍然是可读的。

关于C# : xml serialization of nodes with cyclic links,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449103/

相关文章:

c# - 尝试编辑不存在的项目的最佳实践?

c# - JsonIgnore 属性在 ASP.NET Core 3 中保持序列化属性

c# - 如何实现线程安全列表?

c# - 如何在循环中使用 await

C# 反序列化 xml 错误 ReadElementContentAs() 方法无法在具有子元素的元素上调用

php - 订购 XML 记分板并使用 PHP 返回

iphone - 无法解析 "&"

c# - 在 C# 中使用套接字发送复杂对象,但也发送简单的文本字符串

c# - 序列化 DataContract 和 NULL 数据成员

java - Java序列化UID编号可以从1开始吗