将两个对象列表序列化到XML文件中



尝试创建以下结构的XML文件:

<Objects>
<ArrayOfObject1>
<Object1>
<Object1>
</ArrayOfObject1>
<ArrayOfObject2>
<Object2>
<Object2>
</ArrayOfObject2>
</Objects>

是否有任何方法可以使用XmlSerializer实现这一点?我知道下面的代码片段可用于生成一个XML文件,该文件具有ArrayOfObject1的根节点和与列表中每个对象对应的元素;我只是想将其扩展为具有不同的根节点,以及其中每个对象的数组。

XmlSerializer serializer = new XmlSerializer(typeof(List<Object1>));

当然,最好使用两个不同的XML文件,但我只是想找出是否有一种可接受的/合理的方法来在一个文件中表示两个对象数组。

谢谢!

尝试如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication2
{
class Program
{
const string FILENAME = @"c:temptest.xml";
static void Main(string[] args)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(FILENAME, settings);
XmlSerializer serializer = new XmlSerializer(typeof(Objects));
Objects objects = new Objects()
{
objects1 = new List<Object1>()
{
new Object1(), new Object1()
},
objects2 = new List<Object2>()
{
new Object2(), new Object2()
}
};
serializer.Serialize(writer, objects);
}

}
public class Objects
{
[XmlArray("ArrayOfObject1")]
[XmlArrayItem("Object1")]
public List<Object1> objects1 { get; set; }
[XmlArray("ArrayOfObject2")]
[XmlArrayItem("Object2")]
public List<Object2> objects2 { get; set; }
}
public class Object1
{
}
public class Object2
{
}
}

最新更新