将外部Web服务,XML反序列化为.NET中的类对象

时间:2014-07-31 08:45:36

标签: asp.net xml web-services xml-deserialization

我在从外部Web服务生成对象时遇到了一些麻烦。

我使用http://./ucs-ws?requserstatus& user = testuser

等httpRequest调用Web服务

WebserviceClient.cs

    public string UserStatus(string userName)
    {
        string req = "req=userStatus";
        string user = "user=" + userName;
        string result;
        using (WebClient proxy = new WebClient())
        {
            proxy.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("br:br"));
            proxy.Headers.Add(HttpRequestHeader.Accept, "application/xml");

            try
            {
                var response = proxy.DownloadString(webServiceBasePath + req + "&" + user);


                result = response;
            }
            catch (Exception)
            {
                return "Web Service not available. Please contact the Administrator";
            }



        }
        return result;
    }

我从外部网络服务获得的回复是

<Result>
        <UserStatus 
                 Status="34" 
                 StatusFrom="140729143619" 
                 ClientType="4" 
                 LogOnServer="NcoreConnect" 
                 SIPServer="10.16.3.10" 
                 Device="tel:201" 
                 DeviceStatus="0" 
                 DeviceStatusFrom="140729134828" 
                 ServerTime="140731090408" 
                 IsLoggedOn="True" 
                 IsAgent="True" 
                 CallCount="0" 
                 AnsweredCount="0" 
                 Interactions="" 
                 Message="" 
                 SessionID="a123a38d-d00d-47c0-af03-2b63f40fb8a6" 
                 DiversionStatus="0" 
                 DiversionDestination="" 
                 OldMessageCount="0" 
                 NewMessageCount="0">testuser
         </UserStatus>
</Result>

我需要的是创建一个userStatus对象,我可以将其添加到列表中。使用来自userStatus的变量。

有人知道如果这是一个聪明的方法,所以你有一个这样的课:

UserStatus.cs

public class UserStatus
{
     [XmlElement("UserStatus")]
     public string UserName; // testuser

     public string Status;

     public string StatusFrom;

     public string ClientType;

     public string LogOnServer;

     ...
}

如果有人可以帮助我或带领我朝着正确的方向前进,那就太好了。

1 个答案:

答案 0 :(得分:0)

对于提供的XML,以下内容应该有效

[XmlRoot("Result")]
public class UserStatusResult 
{
    [XmlElement]
    public UserStatus Status { get; set; }
}

public class UserStatus
{
    [XmlText]
    public string UserName { get; set; }

    [XmlAttribute]
    public string Status { get; set; }

    [XmlAttribute]
    public string StatusFrom { get; set; }

    ...
}