Вывод и запись бинарного дерева в XML файл - C#
Формулировка задачи:
Имеется XML файл
и пытаюсь вывести все дерево
Выводит главный элемент (tree) и следующий (зеленое). А дальше полный ступор, как выводить все оставшиеся элементы?
программа
Ошибка в 6-ой строке
<?xml version="1.0" encoding="utf-8" ?>
<tree>
<node name="Зеленое?">
<true>
<node name="Крокодил">
<true>
null
</true>
<false>
null
</false>
</node>
</true>
<false>
<node name="Мычит?">
<true>
<node name="Корова">
<true>
null
</true>
<false>
null
</false>
</node>
</true>
<false>
<node name="Заяц">
<true>
null
</true>
<false>
null
</false>
</node>
</false>
</node>
</false>
</node>
</tree>
using System;
using System.Xml;
class Program
{
static void Main(string[] args)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load("tree.xml");
XmlElement xRoot = xDoc.DocumentElement;
Console.WriteLine(xRoot.Name);
foreach (XmlNode xnode in xRoot)
{
XmlNode attr = xnode.Attributes.GetNamedItem("name");
Console.WriteLine("\t" + attr.Value); //зеленое
}
Console.Read();
}
}
Нашел прекрасный XmlSerializer но и с ним ошибки
Класс дерева
[Serializable]
class MyTree<T>
{
[Serializable]
public class Node
{
public T Value { get; set; }
public Node True { get; set; }
public Node False { get; set; }
public Node(T _value)
{
Value = _value;
True = null;
False = null;
}
}
public MyTree<T>.Node Root;
public MyTree()
{ }
public MyTree(T _value)
{
Root = new MyTree<T>.Node(_value);
}
public void Add(MyTree<T>.Node _currentNode, T _valueTrue, T _valueFalse)
{
_currentNode.True = new MyTree<T>.Node(_valueTrue);
_currentNode.False = new MyTree<T>.Node(_valueFalse);
}
} MyTree<string> Tree = new MyTree<string>("Зеленое"); //корень
MyTree<string>.Node curr = Tree.Root; //текущая вершина
Tree.Add(curr, "Крокодил", "Корова");
XmlSerializer formatter = new XmlSerializer(Tree.GetType());
using (FileStream fs = new FileStream("people.xml", FileMode.OpenOrCreate))
{
formatter.Serialize(fs, Tree);
}
1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] недоступен в силу его уровня защиты. Возможна обработка только общих типов.
Решение задачи: «Вывод и запись бинарного дерева в XML файл»
textual
Листинг программы
public Node True { get; set; }
public Node False { get; set; }