我需要一個包裝父類嗎?
是。 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'生成一個序列化類並刪除你不想要的字段(請不要)。 –