使用一堆子对象(包括二叉树

时间:2016-10-21 11:19:44

标签: c# xml-serialization binary-search-tree

我有一个非常复杂的二叉搜索树。它的节点数据应该保留自定义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文件:

enter image description here

1 个答案:

答案 0 :(得分:0)

二叉树中的我的Add()方法在插入元素之前进行了不必要的检查,因此,它阻止了外树的元素被插入。