Ошибка десериализации XML-ответа с тем же xsi:type (указанный тип не распознан). ⇐ C#
-
Гость
Ошибка десериализации XML-ответа с тем же xsi:type (указанный тип не распознан).
У меня есть ответ на запрос от SalesForce, и я пытаюсь десериализовать его в свою модель. Проблема в том, что результат имеет xsi:type="QueryResult", но также и LP_QuoteInformation имеет xsi:type="QueryResult".
Поэтому при десериализации в мою модель я получаю следующую ошибку: приложением было создано необработанное исключение.","Exception":"System.InvalidOperationException: в XML-документе есть ошибка (1, 1362).\n ---> System.InvalidOperationException: указанный тип не распознан: name='QueryResult', namespace='urn:partner.soap.sforce.com', в .
Пример ответа:
правда Тип 382 1364e70287d84ace0c45f6f5c8b0eee7@test.com f29c6b 0ed736 Прямое направление малого и среднего бизнеса 1–5 PT правда 1 1 Моя модель:
[XmlRoot(ElementName = «result», Namespace = «urn:partner.soap.sforce.com»)] [XmlType(TypeName = "QueryResult")] открытый класс SalesForceGetLeadResult { [XmlElement(ElementName = "done", Namespace = "urn:partner.soap.sforce.com")] public bool Done { get; набор; } [XmlElement(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")] общественный SalesForceGetLeadResultRecord SalesForceGetLeadResultRecord {get; набор; } } [XmlRoot(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")] [XmlType(Namespace = "urn:sobject.partner.soap.sforce.com", TypeName = "sObject")] открытый класс SalesForceGetLeadResultRecord { [XmlElement(ElementName = "FirstName", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка FirstName {get; набор; } [XmlElement(ElementName = "LastName", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка LastName {get; набор; } [XmlElement(ElementName = "Электронная почта", Namespace = "urn:sobject.partner.soap.sforce.com")] общедоступная строка Электронная почта {get; набор; } [XmlElement(ElementName = "LP_CountryCode__c", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка CountryCode {get; набор; } [XmlElement(ElementName="LP_QuoteInformation__r", Namespace="urn:sobject.partner.soap.sforce.com")] общественный SalesForceQuoteInformation QuoteInformation {get; набор; } } [XmlRoot(ElementName="LP_QuoteInformation__r", Namespace = "urn:sobject.partner.soap.sforce.com")] [XmlType(TypeName = "QueryResult", Namespace = "urn:sobject.partner.soap.sforce.com")] открытый класс SalesForceQuoteInformation { [XmlElement(ElementName="done", Namespace="urn:partner2.soap.sforce.com")] public bool Done { get; набор; } } Код для десериализации выглядит следующим образом:
var сериализатор = новый XmlSerializer(typeof(T)); var deserialized = (T)serializer.Deserialize(await result.Content.ReadAsStreamAsync()); Я попробовал удалить XmlType и изменить пространство имен. Когда я изменил пространство имен, это не выдало никакой ошибки, но объект не был десериализован.
У меня есть ответ на запрос от SalesForce, и я пытаюсь десериализовать его в свою модель. Проблема в том, что результат имеет xsi:type="QueryResult", но также и LP_QuoteInformation имеет xsi:type="QueryResult".
Поэтому при десериализации в мою модель я получаю следующую ошибку: приложением было создано необработанное исключение.","Exception":"System.InvalidOperationException: в XML-документе есть ошибка (1, 1362).\n ---> System.InvalidOperationException: указанный тип не распознан: name='QueryResult', namespace='urn:partner.soap.sforce.com', в .
Пример ответа:
правда Тип 382 1364e70287d84ace0c45f6f5c8b0eee7@test.com f29c6b 0ed736 Прямое направление малого и среднего бизнеса 1–5 PT правда 1 1 Моя модель:
[XmlRoot(ElementName = «result», Namespace = «urn:partner.soap.sforce.com»)] [XmlType(TypeName = "QueryResult")] открытый класс SalesForceGetLeadResult { [XmlElement(ElementName = "done", Namespace = "urn:partner.soap.sforce.com")] public bool Done { get; набор; } [XmlElement(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")] общественный SalesForceGetLeadResultRecord SalesForceGetLeadResultRecord {get; набор; } } [XmlRoot(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")] [XmlType(Namespace = "urn:sobject.partner.soap.sforce.com", TypeName = "sObject")] открытый класс SalesForceGetLeadResultRecord { [XmlElement(ElementName = "FirstName", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка FirstName {get; набор; } [XmlElement(ElementName = "LastName", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка LastName {get; набор; } [XmlElement(ElementName = "Электронная почта", Namespace = "urn:sobject.partner.soap.sforce.com")] общедоступная строка Электронная почта {get; набор; } [XmlElement(ElementName = "LP_CountryCode__c", Namespace = "urn:sobject.partner.soap.sforce.com")] общественная строка CountryCode {get; набор; } [XmlElement(ElementName="LP_QuoteInformation__r", Namespace="urn:sobject.partner.soap.sforce.com")] общественный SalesForceQuoteInformation QuoteInformation {get; набор; } } [XmlRoot(ElementName="LP_QuoteInformation__r", Namespace = "urn:sobject.partner.soap.sforce.com")] [XmlType(TypeName = "QueryResult", Namespace = "urn:sobject.partner.soap.sforce.com")] открытый класс SalesForceQuoteInformation { [XmlElement(ElementName="done", Namespace="urn:partner2.soap.sforce.com")] public bool Done { get; набор; } } Код для десериализации выглядит следующим образом:
var сериализатор = новый XmlSerializer(typeof(T)); var deserialized = (T)serializer.Deserialize(await result.Content.ReadAsStreamAsync()); Я попробовал удалить XmlType и изменить пространство имен. Когда я изменил пространство имен, это не выдало никакой ошибки, но объект не был десериализован.
Мобильная версия