Ошибка десериализации XML-ответа с тем же типом xsi:type (указанный тип не распознан).C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка десериализации XML-ответа с тем же типом xsi:type (указанный тип не распознан).

Сообщение Anonymous »

У меня есть ответ на запрос от 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', .

Пример ответа:

Код: Выделить всё

true

Type

382
1364e70287d84ace0c45f6f5c8b0eee7@test.com
f29c6b
0ed736
SME Direct 1-5
PT

true



1


1

Моя модель:

Код: Выделить всё

[XmlRoot(ElementName = "result", Namespace = "urn:partner.soap.sforce.com")]
[XmlType(TypeName = "QueryResult")]
public class SalesForceGetLeadResult
{
[XmlElement(ElementName = "done", Namespace = "urn:partner.soap.sforce.com")]
public bool Done { get; set; }

[XmlElement(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")]
public SalesForceGetLeadResultRecord SalesForceGetLeadResultRecord { get; set; }
}

[XmlRoot(ElementName = "records", Namespace = "urn:partner.soap.sforce.com")]
[XmlType(Namespace = "urn:sobject.partner.soap.sforce.com", TypeName = "sObject")]
public class SalesForceGetLeadResultRecord
{
[XmlElement(ElementName = "FirstName", Namespace = "urn:sobject.partner.soap.sforce.com")]
public string FirstName { get; set; }

[XmlElement(ElementName = "LastName", Namespace = "urn:sobject.partner.soap.sforce.com")]
public string LastName { get; set; }

[XmlElement(ElementName = "Email", Namespace = "urn:sobject.partner.soap.sforce.com")]
public string Email { get; set; }

[XmlElement(ElementName = "LP_CountryCode__c", Namespace = "urn:sobject.partner.soap.sforce.com")]
public string CountryCode { get; set; }

[XmlElement(ElementName="LP_QuoteInformation__r", Namespace="urn:sobject.partner.soap.sforce.com")]
public SalesForceQuoteInformation QuoteInformation { get; set; }

}

[XmlRoot(ElementName="LP_QuoteInformation__r", Namespace = "urn:sobject.partner.soap.sforce.com")]
[XmlType(TypeName = "QueryResult", Namespace = "urn:sobject.partner.soap.sforce.com")]
public class SalesForceQuoteInformation
{

[XmlElement(ElementName="done", Namespace="urn:partner2.soap.sforce.com")]
public bool Done { get; set; }
}

Код для десериализации выглядит следующим образом:

Код: Выделить всё

var serializer = new XmlSerializer(typeof(T));
var deserialized = (T)serializer.Deserialize(await result.Content.ReadAsStreamAsync());
Я попробовал удалить XmlType и изменить пространство имен. Когда я изменил пространство имен, это не выдало никакой ошибки, но объект не был десериализован.

Подробнее здесь: https://stackoverflow.com/questions/774 ... pe-was-not
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»