我有来自一个来源的不同根的 XML 文档。我有一个 XSD 模式,就像在这个问题中描述的那样,具有 Base 类型的 abstract='true' 根元素 'BaseElem',以及扩展 Base 类型并使用 substitutionGroup=' 的附加根元素 Elem1、Elem2、... BaseElement' 属性。
xsd.exe 生成 BaseElem 和派生的 Elem1、Elem2、... 类 ok,只有派生类具有 [XmlRootAttribute]。
我想使用内置的 XmlSerializer 来序列化和反序列化生成的对象。
<Elem1>...</Elem1> <!--This is the whole document, not a frament-->
into this object, or in reverse:
var elem1 = new Elem1();
序列化:
var srz = new XmlSerializer(typeof (BaseElem));
srz.Serialize(writer, elem1);
产生元素。要使用特定的根进行序列化,我必须创建序列化程序“new XmlSerializer(typeof(Elem1))”。
如果使用 BaseElem,反序列化根本不起作用,只能像这样工作:
var srz = new XmlSerializer(typeof (Elem1));
var elem1 = (Elem1) srz.Deserialize(reader);
我怎样才能有一个更多态的、单一的序列化方法?
谢谢!