2016-01-14 2 views
0

Я хочу создать XML-файл в зависимости от схемы (XSD). Я нашел этот вопрос на StackOverflow: Generating XML file using XSD fileXmlSerializer/StreamWriter несколько типов/классов в один и тот же файл xml

Он работает с простым примером, как это:

var data = new ProfileType(); 
data.Name = "Test"; 
data.Address = "Street"; 

var serializer = new XmlSerializer(typeof(ProfileType)); 
using (var stream = new StreamWriter("D:\\test.xml")) serializer.Serialize(stream, data); 

Но как я могу добавить больше классов/типов в тот же файл XML? Если добавить эти строки кодов после них ниже, они перезаписывать файл text.xml:

var data2 = new MemberType(); 
data2.Age = "25"; 
data2.Code = "Z14x"; 
data2.Color = "Red": 

var serializer2 = new XmlSerializer(typeof(MemberType)); 
using (var stream = new StreamWriter("D:\\test.xml")) serializer2.Serialize(stream, data2); 

ответ

1

Вы можете сериализации список объектов:

пример:

public class Type1 
{ 
    public string Name { get; set; } 
    public Type1() { } 
} 

public class Type2 
{ 
    public string Name { get; set; } 
    public Type2() { } 
} 

//.... 

List<object> list = new List<object>(); 
list.Add(new Type1() { Name = "Name1" }); 
list.Add(new Type2() { Name = "Name2" }); 

XmlSerializer serializer = new XmlSerializer(typeof(List<object>), new Type[] { typeof(Type1), typeof(Type2) }); 
using (TextWriter writer = new StreamWriter("result.xml")) 
{ 
    serializer.Serialize(writer, list); 
} 

результат:

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <anyType xsi:type="Type1"> 
    <Name>Name1</Name> 
    </anyType> 
    <anyType xsi:type="Type2"> 
    <Name>Name2</Name> 
    </anyType> 
</ArrayOfAnyType> 
Смежные вопросы