XmlSerializer / StreamWriter 多个 types/classes 到同一个 xml 文件
XmlSerializer / StreamWriter multiple types/classes into same xml file
我想根据架构 (XSD) 创建一个 XML 文件。我在 Whosebug 上发现了这个问题:Generating XML file using XSD file
它适用于像这样的简单示例:
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);
但是我怎样才能将更多 classes/types 添加到同一个 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);
您可以序列化对象列表:
示例:
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>
我想根据架构 (XSD) 创建一个 XML 文件。我在 Whosebug 上发现了这个问题:Generating XML file using XSD file
它适用于像这样的简单示例:
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);
但是我怎样才能将更多 classes/types 添加到同一个 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);
您可以序列化对象列表:
示例:
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>