【发布时间】:2019-08-20 16:07:59
【问题描述】:
由于“类型”属性,我无法反序列化以下 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 。”
【问题讨论】:
-
在此处插入您的 XML 并将其生成的代码与您的代码进行比较:xmltocsharp.azurewebsites.net
-
感谢您的提示。这是我之前已经尝试过的,我总是遇到与上面编辑过的帖子相同的错误。
-
将示例数据放入您的类并序列化。然后看xml。问题在于继承的类。当您继承类时,它需要 type 属性才能工作。所以你输入的 xml 文件必须看起来像序列化的输出 xml。
-
嗨,jdweng。我得到的 XML 是来自服务的响应,所以它对我来说是一个黑匣子。抱歉,我之前可能不得不提到这一点。
标签: c# xml deserialization