В .NET есть DataContractSerializer и XmlSerializer.
Я бы посоветовал посмотреть в сторону WCF, где сериализация - часть архитектуры. Кстати, в JSON формат WCF тоже сериализует, не только в XML.
Если основательно этим заниматься то есть Software Factory. Ресуешь или экспортируешь типы в картинку, типа UML, а дальше генерируется код, two-way процесс, между прочим. Это бесплатная добавка к VS2008.
Из SQL сериализовывать в XML - есть for XML добавка в Select, которая задействует OPENXML, а тот уже рекордсеты в XML выводит.
Сериализация
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Leo Gan
- Маньяк
- Сообщения: 1764
- Зарегистрирован: 29 апр 2005, 16:55
- Откуда: где-то рядом с жёлтым карликом
- Контактная информация:
-
- Частый Гость
- Сообщения: 20
- Зарегистрирован: 09 авг 2006, 21:51
- Откуда: Москва - Ванкувер
- Контактная информация:
Re: Сериализация
Если все узлы в дереве одного типа, то самый простой вариант:
Eсли, нужен полиморфизм, тогда придется использовать атрибут XmlInclude, т.к. по умолчанию инфа о типе не сохраняется
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApplication9
{
[XmlRoot("entity")]
public class Entity
{
public Entity()
{
}
public Entity(int id, string name, params Entity[] childs)
{
this.Name = name;
this.Id = id;
this.Childs.AddRange(childs);
}
private string _name;
[XmlAttribute("name")]
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _id;
[XmlAttribute("id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
private List<Entity> _childs = new List<Entity>();
[XmlArray("childEntities")]
public List<Entity> Childs
{
get { return _childs; }
set { _childs = value; }
}
}
class Program
{
static void Main(string[] args)
{
// Serialization
Entity obj =
new Entity(0, "Root", new Entity[] {
new Entity(1, "Child 1",
new Entity(11, "Child 11")),
new Entity(2, "Child 2") });
using (StreamWriter w = new StreamWriter(@"C:\Temp\test.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(Entity));
serializer.Serialize(w, obj);
}
//Deserialization
Entity obj2 = null;
using (StreamReader r = new StreamReader(@"C:\Temp\test.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(Entity));
obj2 = (Entity)serializer.Deserialize(r);
}
}
}
}
-
- Маньяк
- Сообщения: 4203
- Зарегистрирован: 08 мар 2006, 15:45
- Откуда: Ричмонд
Re: Сериализация
лучше чилдрэн 
