[英]Deserializing xml with multiple namespaces
我正在使用的数据源始终使用相同的父类(xml中的模型)通过xsi:type发送数据,以确定该类的实际类型。 在他们开始向xsi:type添加名称空间之前,这种方法一直工作良好。 现在无论我尝试什么,它都不会反序列化。
这是XML:
<ModelResource xmlns:ot="http://www.example.com/otSpace">
<Models xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:type="ot:myChildClass">
Stuff here
</Models>
</ModelResource>
根节点
[XmlRoot("ModelResource")]
public class XmlRoot
{
[XmlElement("Models")]
public List<BaseObject> Bases { get; set; }
}
家长班
[XmlInclude(typeof(MyChildClass))]
public abstract class BaseObject
{
}
儿童班
[XmlType(TypeName = "myChildClass", Namespace = "http://www.example.com/otSpace")]
public class MyChildClass : BaseObject
{
}
反序列化此XML时,出现以下错误:
{“无法识别指定的类型:name ='myChildClass',namespace =' http://www.example.com/otSpace ',位于。”}
谢谢你的帮助。
这些类适用于您的示例。 我已将这些类命名为与元素名称相同,只是为了使其易于理解:
public class ModelResource
{
public Models Models { get; set; }
}
[XmlInclude(typeof(MyChildClass))]
[XmlRoot(Namespace = "")]
public abstract class Models
{
}
[XmlType("myChildClass", Namespace = "http://www.example.com/otSpace")]
public class MyChildClass : Models
{
[XmlText]
public string Value { get; set; }
}
请参阅此小提琴以获得有效的演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.