我需要一个包装父类吗?
是。 XmlSerializer
不是那么聪明。它输出一个XML文件。它没有考虑到它可能已经有一些内容。您只需将两个XML文件合并为一个。
如果事实上,如果您的数据结构很简单,则根本不需要执行IXmlSerializable
。你可以序列化任何类。这种结构就足够了:
public class ParentClass
{
public Class1 FirstClass {get;set;}
public Class2 SecondClass {get;set;}
}
只是将它填充到您的实例中,您可以将它们序列化为XML。
对我而言,我有一个扩展方法来为我做所有的序列化。这是它:
public static string ToXml<T>(this T value)
{
StringWriter stringWriter = new StringWriter();
string xml;
XmlSerializer xmlserializer = new XmlSerializer(typeof(T));
using (XmlWriter writer = XmlWriter.Create(stringWriter, new XmlWriterSettings { Indent = true }))
{
writer.WriteStartDocument();
xmlserializer.Serialize(writer, value);
writer.WriteEndDocument();
xml = stringWriter.ToString();
}
return xml;
}
然后你可以叫:
string xml = someInstanceOfParent.ToXml();
保存,作为你喜欢。
XML只能有一个根标记。所以你不能使用序列化程序将多个xml放入同一个文件。唯一的选择是封装父类。 – jdweng
这是我的答案,对不对? @jdweng –
那么,你需要确实实现'IXmlSerialize'。或者使用'sgen'生成一个序列化类并删除你不想要的字段(请不要)。 –