Десериализация XML приближается к NULL

Мой десериализатор выполняется без исключения, но полученный объект возвращает значения NULL. Исходный XML четко показывает значения, которые по какой-то причине не установлены в целевом объекте. Я хоть убей не могу понять, почему?

Исходный XML:

<soapenv:Fault xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>soapenv:Client</faultcode>
<faultstring>Could not insert new row - duplicate value in a UNIQUE INDEX column (Unique Index:).</faultstring>
<detail>
    <axlError>
        <axlcode>-239</axlcode>
        <axlmessage>Could not insert new row - duplicate value in a UNIQUE INDEX column (Unique Index:).</axlmessage>
        <request>addRoutePartition</request>
    </axlError>
</detail>

Класс:

using System.Xml.Serialization;

namespace AXLClassLibrary
{
[XmlRoot(ElementName = "Fault", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Fault
{
    [XmlElement(ElementName = "faultcode")]
    public string Faultcode { get; set; }
    [XmlElement(ElementName = "faultstring")]
    public string Faultstring { get; set; }
    [XmlElement(ElementName = "detail")]
    public Detail Detail { get; set; }
    [XmlAttribute(AttributeName = "soapenv", Namespace = "http://www.w3.org/2000/xmlns/")]
    public string Soapenv { get; set; }
}

[XmlRoot(ElementName = "axlError")]
public class AxlError
{
    [XmlElement(ElementName = "axlcode")]
    public string Axlcode { get; set; }
    [XmlElement(ElementName = "axlmessage")]
    public string Axlmessage { get; set; }
    [XmlElement(ElementName = "request")]
    public string Request { get; set; }
}

[XmlRoot(ElementName = "detail")]
public class Detail
{
    [XmlElement(ElementName = "axlError")]
    public AxlError AxlError { get; set; }
}
}

Код десериализатора:

                var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                XDocument xd = XDocument.Parse(resp);
                XNamespace ns1 = "http://schemas.xmlsoap.org/soap/envelope/";
                XNode faultXML = xd.Descendants(ns1 + "Fault").DescendantNodesAndSelf().First();
                XmlRootAttribute xRoot = new XmlRootAttribute();
                xRoot.ElementName = "Fault";
                xRoot.Namespace = "http://schemas.xmlsoap.org/soap/envelope/";
                xRoot.IsNullable = false;
                resp = faultXML.ToString();


                Fault currentFault;
                XmlSerializer serializer = new XmlSerializer(typeof(Fault), xRoot);
                using (TextReader readFault = new StringReader(resp))
                {
                    currentFault = (Fault)serializer.Deserialize(readFault);
                }

Десериализация XML приближается к NULL

Я думаю, вы, вероятно, захотите проверить System.Runtime.Serialization.Formatters.Soap, чтобы получить то, что вы ищете. Насколько я могу судить, это похоже на вполне стандартную операцию SOAP. Пространство имен необходимо для нескольких уровней абстракции, но оно становится довольно сложным для понимания, поэтому в наши дни все любят JSON. Процитирую то, что я где-то видел в сообщении об ошибке: «У SOAP неприятный вкус, чувак».

Van Amburg 13.06.2018 15:43

Спасибо @VanAmburg, я разберусь. И поверьте мне, я бы предпочел использовать JSON, просто не вариант с этим API. :)

GED125 13.06.2018 17:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
152
0

Другие вопросы по теме