无法使用类型属性反序列化 XML



由于"type"属性,我无法反序列化以下XML。

到目前为止我尝试过:

我要反序列化的 XML:

<foundEntities>
<staticGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:StaticGroupType">
<number>10000</number>
<name>Gruppe A</name>
</staticGroup>
</foundEntities>

班级:

[XmlRootAttribute(Namespace = "", IsNullable = false, ElementName = "foundEntities")]
public class FoundEntities
{
[XmlElement(ElementName = "staticGroup", Namespace = "")]
public StaticGroup staticGroup { get; set; }
}
[XmlRoot(ElementName = "staticGroup")]
[XmlInclude(typeof(StaticGroupType))]
public class StaticGroup
{
[XmlElement(ElementName = "number")]
public string number { get; set; }
[XmlElement(ElementName = "name")]
public string name { get; set; }
}
public class StaticGroupType : StaticGroup
{
}

可能我是盲人,但我在这里错过了什么?任何提示都受到高度赞赏。


我使用 https://xmltocsharp.azurewebsites.net/生成了类,它给了我以下输出:

[XmlRoot(ElementName = "staticGroup")]
public class FoundStaticGroup
{
[XmlElement(ElementName = "number")]
public string Number { get; set; }
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlAttribute(AttributeName = "xsi", Namespace = "http://www.w3.org/2000/xmlns/")]
public string Xsi { get; set; }
[XmlAttribute(AttributeName = "type", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string Type { get; set; }
}
[XmlRoot(ElementName = "foundEntities")]
public class FoundGroupEntities
{
[XmlElement(ElementName = "staticGroup")]
public StaticGroup StaticGroup { get; set; }
}

但是我现在得到的是一个错误,就像以前

几次一样:

"无法识别指定的类型:name='StaticGroupType', namespace='http://com.f24.soap.fwi.schema', at .">

我在这里发布了一个有效的解决方案:

点网小提琴链接

我不确定是否有外部架构,但我必须删除xsi:type="ns1:StaticGroupType"才能使其工作。 您的 XML 不会在大多数读取器中进行分析,除非 XML 或架构中有该命名空间的定义。 不知道您的后端服务是什么,我无法推荐如何解决此问题。

最大的问题是你的两个类都标有XmlRootAtribute代码属性。 在您的示例中,只有一个类可以表示根。 我还删除了不必要的属性,例如Namespace,这些属性对您使用默认命名空间没有任何影响。

更新

这里的问题是传入的XML不完整,它需要一个架构引用才能解析StaticGroup类型。 您必须联系后端的人员来解决此问题,或者手动剥离 XML 的该部分。 正确的 XML 如下所示:

<foundEntities
xsi:schemaLocation="http://com.f24.soap.fwi.schema (url to back-end schema here)">
<staticGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:StaticGroupType">
<number>10000</number>
<name>Gruppe A</name>
</staticGroup>
</foundEntities>

最新更新