将.NET XmlSerializer用于具有不同多态根的xml

我有来自不同根源的XML文档。 我有一个XSD模式,就像这个问题中所描述的那样,具有Base类型的abstract ='true'根元素'BaseElem',以及扩展Base类型并使用substitutionGroup ='的其他根元素Elem1,Elem2,... BaseElement'属性。

xsd.exe生成BaseElem和派生的Elem1,Elem2,...类,只有派生类具有[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);

我怎样才能有一个更多态的单一序列化方法?

谢谢!


如果我理解正确......可以使用更多的通用方法吗? (只显示反序列化片段...)

   public static T DeserializeObject<T>(object obj)
    {
       XmlSerializer xs = new XmlSerializer(typeof(T));
       //etc
       return (T)xs.Deserialize(obj);
    }
链接地址: http://www.djcxy.com/p/54903.html

上一篇: Using .NET XmlSerializer for xml with different polymorphic roots

下一篇: Problem deserializing generic List's with C# XmlSerializer