XML сериализацията подобно на binary сериализацията се справя и със графове от обекти
Нека да добавим още един клас който има пропърти от тип MyClass1
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public class MyClass2
{
private MyClass1 m_Graph;
public MyClass2()
{
m_Graph=new MyClass1();
}
public MyClass1 Graph
{
get{return m_Graph;}
set{m_Graph=value;}
}
} |
И сега да сериализираме графа
CODE1
2
3
4
5
6
| MyClass2 myObject = new MyClass2();
XmlSerializer mySerializer = new XmlSerializer(typeof(MyClass2));
StreamWriter myWriter = new StreamWriter("c:\myclass.xml");
mySerializer.Serialize(myWriter, myObject);
myWriter.Flush();
myWriter.Close(); |
Ако отворим файла myclass.xml ще видим следното:
CODEТагът <MyClass2> съдържа описанието на нашият клас MyClass2. Тагът <Graph> съдържа описанието на пропъртито Graph, което е от тип
MyClass1.
Както се вижда XML сериализирането е просто и дотук почти не се различава от binary сериализацията.
.NET палатформата предлага някой допълнителни възможности да контролираме XML сериализацията, чрез използване на атрибути
Ще спомена някой от тях.
Един такъв атрибут е XmlIgnore. Той позволява да укажем дадено поле/пропърти да не се включва във XML съдаржанието
Нека да променим декларацията на нашият MyClass1 по следният начин:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class MyClass1
{
private string m_Title;
public MyClass1()
{
m_Title="title1";
}
[XmlIgnore]
public string Title
{
get{return m_Title;}
set{m_Title=value;}
}
} |