我有一个非常复杂的二叉搜索树。它的节点数据应该保留自定义KeyValue类的对象。作为键,应该有一个字符串,value是另一个树,该数据字段包含一个自定义KeyValue类的对象,其中key是一个字符串,值是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文件:
答案 0 :(得分:0)
二叉树中的我的Add()方法在插入元素之前进行了不必要的检查,因此,它阻止了外树的元素被插入。