using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Linq;
public class node
{
public string name;
public string age;
public override string ToString()
{
return string.Format("(node) name: {0}, age: {1}\n", name, age);
}
}
public class tree
{
public string name;
public int age;
[XmlElement("node")]
public List<node> nodes;
[XmlElement("tree")]
public List<tree> trees;
public override string ToString()
{
return string.Format("(tree) name: {0}, age: {1}\n", name, age) +
string.Join("", nodes.Select(x=>x.ToString())) +
string.Join("", trees.Select(x=>x.ToString()));
}
}
public class Test
{
public static void Main()
{
var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<tree>
<name>Берёза</name>
<age>3</age>
<node>
<name>Лист1</name>
<age>1</age>
</node>
<node>
<name>Лист2</name>
<age>1</age>
</node>
<tree>
<name>Персик</name>
<age>3</age>
<node>
<name>Лист11</name>
<age>1</age>
</node>
<node>
<name>Лист22</name>
<age>1</age>
</node>
</tree>
</tree>
";
var reader = new StringReader(xml);
var result = (tree)new XmlSerializer(typeof (tree)).Deserialize(reader);
Console.WriteLine(result.ToString());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlhtbDsKdXNpbmcgU3lzdGVtLlhtbC5TZXJpYWxpemF0aW9uOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5MaW5xOwoKcHVibGljIGNsYXNzIG5vZGUKewoJcHVibGljIHN0cmluZyBuYW1lOwoJcHVibGljIHN0cmluZyBhZ2U7CgkKCXB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQoJewoJCXJldHVybiBzdHJpbmcuRm9ybWF0KCIobm9kZSkgbmFtZTogezB9LCBhZ2U6IHsxfVxuIiwgbmFtZSwgYWdlKTsKCX0KfQoKcHVibGljIGNsYXNzIHRyZWUKewoJcHVibGljIHN0cmluZyBuYW1lOwoJcHVibGljIGludCBhZ2U7CglbWG1sRWxlbWVudCgibm9kZSIpXQoJcHVibGljIExpc3Q8bm9kZT4gbm9kZXM7CglbWG1sRWxlbWVudCgidHJlZSIpXQoJcHVibGljIExpc3Q8dHJlZT4gdHJlZXM7CgkKCXB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQoJewoJCXJldHVybiBzdHJpbmcuRm9ybWF0KCIodHJlZSkgbmFtZTogezB9LCBhZ2U6IHsxfVxuIiwgbmFtZSwgYWdlKSArCgkJCXN0cmluZy5Kb2luKCIiLCBub2Rlcy5TZWxlY3QoeD0+eC5Ub1N0cmluZygpKSkgKyAKCQkJc3RyaW5nLkpvaW4oIiIsIHRyZWVzLlNlbGVjdCh4PT54LlRvU3RyaW5nKCkpKTsKCX0KfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB4bWwgPSBAIjw/eG1sIHZlcnNpb249IiIxLjAiIiBlbmNvZGluZz0iIlVURi04IiI/Pgo8dHJlZT4KICAgPG5hbWU+0JHQtdGA0ZHQt9CwPC9uYW1lPgogICA8YWdlPjM8L2FnZT4KICAgPG5vZGU+CiAgICAgICA8bmFtZT7Qm9C40YHRgjE8L25hbWU+CiAgICAgICA8YWdlPjE8L2FnZT4KICAgPC9ub2RlPgogICA8bm9kZT4KICAgICAgIDxuYW1lPtCb0LjRgdGCMjwvbmFtZT4KICAgICAgIDxhZ2U+MTwvYWdlPgogICA8L25vZGU+CiAgIDx0cmVlPgogICAgICA8bmFtZT7Qn9C10YDRgdC40Lo8L25hbWU+CiAgICAgIDxhZ2U+MzwvYWdlPgogICAgICA8bm9kZT4KICAgICAgICAgPG5hbWU+0JvQuNGB0YIxMTwvbmFtZT4KICAgICAgICAgPGFnZT4xPC9hZ2U+CiAgICAgIDwvbm9kZT4KICAgICAgPG5vZGU+CiAgICAgICAgIDxuYW1lPtCb0LjRgdGCMjI8L25hbWU+CiAgICAgICAgIDxhZ2U+MTwvYWdlPgogICAgICA8L25vZGU+CiAgIDwvdHJlZT4KPC90cmVlPgoiOwoKCQl2YXIgcmVhZGVyID0gbmV3IFN0cmluZ1JlYWRlcih4bWwpOwoJCXZhciByZXN1bHQgPSAodHJlZSluZXcgWG1sU2VyaWFsaXplcih0eXBlb2YgKHRyZWUpKS5EZXNlcmlhbGl6ZShyZWFkZXIpOwoJCQoJCUNvbnNvbGUuV3JpdGVMaW5lKHJlc3VsdC5Ub1N0cmluZygpKTsKCX0KfQ==