Разобрать мыльный XML в класс C #

Я пытаюсь разобрать сообщение SOAP в определенный класс, но у меня возникли проблемы.

Это SOAP-сообщение:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <LoginResponse
            xmlns="http://schemas.microsoft.com/sharepoint/soap/">
            <LoginResult>
                <CookieName>FedAuth</CookieName>
                <ErrorCode>NoError</ErrorCode>
                <TimeoutSeconds>1800</TimeoutSeconds>
            </LoginResult>
        </LoginResponse>
    </soap:Body>
</soap:Envelope>

У меня есть простой класс с 3 атрибутами:

public class SoapResponse
{
    public string CookieName { get; set; }

    public int TimeoutSeconds { get; set; }

    public string ErrorCode { get; set; }
}

Я пытаюсь использовать Linq для оценки Soap XML и анализа его в объект класса SoapResponse. Пока у меня есть следующий код:

var xml = XDocument.Parse(responseXml);
var soapResponse = from result in xml.Descendants(XName.Get("LoginResult", xmlNamespace))
    let cookieNameElement = result.Element(XName.Get("CookieName", xmlNamespace)) where cookieNameElement != null
    let timoutSecondsElement = result.Element(XName.Get("TimoutSeconds", xmlNamespace)) where timoutSecondsElement != null
    let errorCodeElement = result.Element(XName.Get("ErrorCode", xmlNamespace)) where errorCodeElement != null
    select new SoapResponse
    {
        CookieName = cookieNameElement.Value,
        TimeoutSeconds = Convert.ToInt32(timoutSecondsElement.Value),
        ErrorCode = errorCodeElement.Value
    };

Я знаю, что это очень похоже на этот постИспользование LINQ to XML для анализа сообщения SOAP пост, но я не могу найти способ обойти это.

Заранее спасибо! :)

Ответы на вопрос(1)

Ваш ответ на вопрос