Xml xsi:type反序列化期间无法识别类型

时间:2018-07-10 15:23:25

标签: c# xml-deserialization xsitype

我从1C收到2个几乎相同的xml:

            <КонтактнаяИнформацияxmlns =“ http://www.v8.1c.ru/ssl/contactinfo” xmlns:xs =“ http://www.w3.org/2001/XMLSchema” xmlns:xsi =“ http:// www .w3.org / 2001 / XMLSchema-instance“Представление=”улица,дом№дом,корпускорпус,квартиракв,город,23505“>                <Комментарий> 123                <Составxsi:type =“Адрес”Страна=“Украина”>                   <Составxsi:type =“АдресУкраина”>                      <НаселПункт>город                      <Улица>улица                      <ДопАдрЭл>                         <НомерТип=“ 2010”Значение=“кв” />                                            <ДопАдрЭл>                         <НомерТип=“ 1050”Значение=“корпус” />                                            <ДопАдрЭл>                         <НомерТип=“ 1010”Значение=“дом” />                                            <ДопАдрЭлТипАдрЭл=“ 10100000”Значение=“ 23505” />                                                
                      <КонтактнаяИнформацияxmlns =“ http://www.v8.1c.ru/ssl/contactinfo” xmlns:xs =“ http://www.w3.org/2001/XMLSchema” xmlns:xsi =“ http:// www .w3.org / 2001 / XMLSchema-instance“Представление=”АНГОЛА,iuherf ihieh eruh iheruhopropr koerpf kpreko“>                <Комментарий> egrw 34t34t 43t                <Составxsi:type =“Адрес”Страна=“АНГОЛА”>                   <Составxsi:type =“ xs:string”> iuherf ihieh eruh iheruhopropr koerpf kpreko                             

我想将它们反序列化为C#对象,所以我创建了一些类:

[XmlRoot("КонтактнаяИнформация", Namespace = "http://www.v8.1c.ru/ssl/contactinfo", IsNullable = false)]
    public class SuContactInfo
    {
        [XmlAttribute("Представление", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string View { get; set; }

        [XmlElement("Комментарий", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string Comment { get; set; }

        [XmlElement("Состав", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public SuBaseAddress Composition { get; set; }
    }

    [XmlType("Адрес", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    [XmlRoot("Адрес", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    public class SuXmlExternalComposition : SuBaseAddress
    {
        [XmlElement("Состав", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public SuBaseAddress InternalComposition { get; set; }

        [XmlAttribute("Страна", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string Country { get; set; }
    }

    [XmlType("АдресУкраина", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    [XmlRoot("АдресУкраина", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    public class SuXmlInternalComposition : SuBaseAddress
    {
        [XmlElement("ДопАдрЭл", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public SuXmlAdditionalAddressElement[] AdditionalAddressElement { get; set; }

        [XmlElement("НаселПункт", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string City { get; set; }

        [XmlElement("Улица", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string Street { get; set; }
    }

    [XmlRoot(Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    public class SuXmlAdditionalAddressElement
    {
        [XmlElement("ДопАдрЭл", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public SuXmlNumber Number { get; set; }

        [XmlAttribute("ТипАдрЭл", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string AddressTypeElement { get; set; }

        [XmlAttribute("Значение", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string Value { get; set; }
    }

    [XmlRoot(Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    public class SuXmlNumber
    {
        [XmlAttribute("Тип", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string Type { get; set; }

        [XmlAttribute("Значение", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
        public string SuValue { get; set; }
    }

    [XmlInclude(typeof(SuXmlExternalComposition))]
    [XmlInclude(typeof(SuXmlInternalComposition))]
    [XmlInclude(typeof(SuStringAddress))]
    [XmlType("Состав", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    [XmlRoot("Состав", Namespace = "http://www.v8.1c.ru/ssl/contactinfo", IsNullable = false)]
    public abstract class SuBaseAddress { }

    [XmlType("string", Namespace = "http://www.v8.1c.ru/ssl/contactinfo")]
    [XmlRoot("string", Namespace = "http://www.v8.1c.ru/ssl/contactinfo", IsNullable = false)]
    public class SuStringAddress : SuBaseAddress
    {
        [XmlText]
        public string CommaSeparatedAddress { get; set; }
    }

出现运行时错误

"Указанный тип не был распознан: имя="string", пространство имен="http://www.w3.org/2001/XMLSchema""

有人可以帮助我了解错误的出处吗?

0 个答案:

没有答案