2016-01-14 47 views
0

我想根據模式(XSD)創建XML文件。我發現在計算器上這樣一個問題: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> 
相關問題