将.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