2016-10-21 12 views
0

私は非常に複雑なバイナリ検索ツリーを持っています。それはノードのデータは、カスタムKeyValueクラスのオブジェクトを保持する必要があります。キーとして文字列があり、値は別のツリーで、データフィールドにはカスタムKeyValueクラスのオブジェクトが含まれています。ここでkeyは文字列、valueはstring []です。バイナリツリーを含む子オブジェクトの束を使って汎用バイナリ検索ツリーをシリアライズ

XMLシリアライザを使用して、シリアライズおよびデシリアライズする必要があります。

問題は、シリアル化が正しく行われていないことです。 XMLファイルには要素としてのノードは含まれず、データのみが含まれます。

したがって、逆シリアル化することはできません。新しいツリーのルートはnullです。 ここでは、シリアル化を実行する方法を示します。

  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

+0

バイナリツリーを表すために使用するオブジェクトグラフを表示できますか? – code4life

答えて

0

マイadd()メソッドは、したがって、それが挿入される外側の木の要素を妨げ、挿入要素の前に不必要なチェックを持っていました。

関連する問題