反序列化部分 SOAP 响应

我对肥皂响应的特定部分的反序列化有点迷失。


响应:


<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>

    <ns1:LoginResult xmlns:ns1="http://abc.def.schema">

        <sessionId>123456789</sessionId>

        <sessionTimeout>30</sessionTimeout>

        <organizationName>WebService Test Account XYZ</organizationName>

        <userInfoResult>

            <accessibleOrgs>

                <name>WebService Test Account XYZ</name>

                <description/>

                <prefix>10</prefix>

                <countryCallingCode>+49</countryCallingCode>

                <treeLevel>0</treeLevel>

                <timeZone>

                    <timeZoneId>Europe/Berlin</timeZoneId>

                    <currentUtcOffset>3600000</currentUtcOffset>

                </timeZone>

                <billingCompany>COMPANY 123</billingCompany>

                <language>DE</language>

            </accessibleOrgs>

            <isDemo>true</isDemo>

            <prefixLength>0</prefixLength>

            <alarmNumberLength>0</alarmNumberLength>

            <groupNumberLength>0</groupNumberLength>

            <personNumberLength>0</personNumberLength>

        </userInfoResult>

    </ns1:LoginResult>

</soapenv:Body>

我需要反序列化“LoginResult”部分。我知道反序列化方法,但我正在努力解决以下事实:A) 有命名空间,B) 我只需要 XML 的子集。


也许有人可以指出我正确的方向。


拉丁的传说
浏览 119回答 1
1回答

皈依舞

从 LoginResult 类的定义开始。[XmlRootAttribute(Namespace = "http://abc.def.schema", IsNullable = false, ElementName = "LoginResult")]public class LoginResult{    [XmlElement(Namespace ="")]    public int sessionId { get; set; }    [XmlElement(Namespace = "")]    public string organizationName { get; set; }     ..... some more properties}使用XDocument类来System.Xml.Linq解析 xml。找到“LoginResult”元素。反序列化为LoginResult类型。var xDoc = XDocument.Parse(str);var xLoginResult = xDoc.Root.Descendants().FirstOrDefault(d => d.Name.LocalName.Equals("LoginResult"));var serializer = new XmlSerializer(typeof(LoginResult));using (var reader = xLoginResult.CreateReader()){                    var result = (LoginResult)serializer.Deserialize(reader);}
打开App,查看更多内容
随时随地看视频慕课网APP