Вывод и запись бинарного дерева в 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д