反序列化SOAP响应的一部分

时间:2019-08-08 15:07:14

标签: c# xml serialization deserialization xml-namespaces

我对肥皂反应的特定部分进行反序列化使我有些失落。

响应:

<?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的一个子集感到困惑。

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

进阶

1 个答案:

答案 0 :(得分:1)

从LoginResult类的定义开始。

<label for="regionpercent-0">Regionpercent-0</label>
  1. 使用[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类来解析xml。
  2. 找到“ LoginResult”元素。
  3. 反序列化为System.Xml.Linq类型。

    LoginResult