简体   繁体   English

XmlSerializer / StreamWriter将多个类型/类转换为同一xml文件

[英]XmlSerializer / StreamWriter multiple types/classes into same xml file

I want to create an XML file depending on a schema (XSD). 我想根据模式(XSD)创建XML文件。 I've found this question on StackOverflow: Generating XML file using XSD file 我在StackOverflow上发现了这个问题: 使用XSD文件生成XML文件

It works with a simple sample like this: 它可以像这样的简单样本一起工作:

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);

But how can I add more classes/types into the same xml file? 但是,如何在同一个xml文件中添加更多的类/类型? If I add these lines of codes after them below, they overwrite the text.xml file: 如果我在下面的这些代码行之后添加它们,它们将覆盖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);

You can serialize a list of objects: 您可以序列化对象列表:

example: 例:

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);
 }

result: 结果:

<?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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM