使用一堆子对象序列化通用二叉搜索树,包括二叉树
Serializing a generic binary search tree with a bunch of child objects, including a binary tree
我有一个非常复杂的二叉搜索树。它的节点数据应该保留一个自定义KeyValue class 的对象。作为键应该是一个字符串,值是另一棵树,其中数据字段包含自定义KeyValue class的对象,其中键是字符串,值是string[].
我需要使用 XML 序列化程序对其进行序列化和反序列化。
问题是序列化没有正确完成。 XML 文件不包含节点作为元素,只有它们的数据。
因此,无法反序列化,新树的根为空。
这是我执行序列化的方式。
XmlSerializer XMLserializer = new XmlSerializer(typeof(RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>), extraTypes);
XmlSerializerNamespaces myNamespace = new XmlSerializerNamespaces();
myNamespace.Add("", "");
using (FileStream serializationStream = File.Create("dictionaryTreeExample.xml"))
XMLserializer.Serialize(serializationStream, dictionaryTree, myNamespace);
RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>> dictionaryTreeDeserialized;
using (FileStream deserializationStream = File.OpenRead("dictionaryTreeExample.xml"))
{
dictionaryTreeDeserialized = (RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>)XMLserializer.Deserialize(deserializationStream);
}
XML 文件:
我在二叉树中的 Add() 方法在插入元素之前进行了不必要的检查,因此它阻止了外层树的元素被插入。
我有一个非常复杂的二叉搜索树。它的节点数据应该保留一个自定义KeyValue class 的对象。作为键应该是一个字符串,值是另一棵树,其中数据字段包含自定义KeyValue class的对象,其中键是字符串,值是string[].
我需要使用 XML 序列化程序对其进行序列化和反序列化。
问题是序列化没有正确完成。 XML 文件不包含节点作为元素,只有它们的数据。
因此,无法反序列化,新树的根为空。 这是我执行序列化的方式。
XmlSerializer XMLserializer = new XmlSerializer(typeof(RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>), extraTypes);
XmlSerializerNamespaces myNamespace = new XmlSerializerNamespaces();
myNamespace.Add("", "");
using (FileStream serializationStream = File.Create("dictionaryTreeExample.xml"))
XMLserializer.Serialize(serializationStream, dictionaryTree, myNamespace);
RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>> dictionaryTreeDeserialized;
using (FileStream deserializationStream = File.OpenRead("dictionaryTreeExample.xml"))
{
dictionaryTreeDeserialized = (RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>)XMLserializer.Deserialize(deserializationStream);
}
XML 文件:
我在二叉树中的 Add() 方法在插入元素之前进行了不必要的检查,因此它阻止了外层树的元素被插入。