来自服务器的反序列化XML响应 [英] Deserialise XML response from server

查看:101
本文介绍了来自服务器的反序列化XML响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想反序列化一个对象。我在msdn.com中看到以下代码:

I want to deserialise an object. I saw the following code in msdn.com:

private void DeserializeObject(string filename)
    {
    Debug.WriteLine("Reading with XmlReader");

    // Create an instance of the XmlSerializer specifying type and namespace.
    XmlSerializer serializer = new XmlSerializer(typeof(User));

    // A FileStream is needed to read the XML document.
    FileStream fs = new FileStream(filename, FileMode.Open);
    XmlReader reader = XmlReader.Create(filename);

    // Declare an object variable of the type to be deserialized.
    User i;

    // Use the Deserialize method to restore the object's state.
    i = (User)serializer.Deserialize(reader);
    fs.Close();

    // Write out the properties of the object.
    Debug.WriteLine(
    i.field1+ "\t" +
    i.field2+ "\t" +
    i.field3+ "\t" +
    i.field4);
    }

但是,我不想反序列化文件,而是想反序列化XML我从服务器获得的流作为响应,相应的代码显示在此处:

However, I don't want to deserialise a file, but rather an XML stream I get from the server as a response, corresponding code shown here:

HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
            HttpWebResponse response;
            response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);

            Stream streamResponse = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamResponse);
            var Response = streamReader.ReadToEnd();
            streamResponse.Close();
            streamReader.Close();
            response.Close();
            if (Response == "")
            {
                //show some error msg to the user        
            }
            else
            {
                //Your response will be available in "Response" 
                string mystring = Response.ToString();

                //Mytext.Text = mystring;
                Debug.WriteLine(mystring);
                DeserializeObject("myxml");  <---- call deserialise 
}

如何实现?我使用xsd.exe工具根据XML创建了一个名为用户的类。

How can I achieve this? I created a class called "User" according to XML by using the xsd.exe tool.

推荐答案

确定。
这是这样的:-

OK I did it. This is how :-

private void DeserializeObject(string inxml)
    {
        Debug.WriteLine("Reading with XmlReader");
        var xml = inxml;
        var serializer = new XmlSerializer(typeof(User));
        using (var reader = new StringReader(xml))
        {
            var user = (User)serializer.Deserialize(reader);
            Debug.WriteLine(
                            user.Number + "\t" +
                            user.Id + "\t" +
                            user.TextKey + "\t" +
                            user.Agent );
        }
    }

我没有传递文件url,而是传递了完整的串。其余内容如上所示。

Instead of passing the file url, I passed the complete string. And the rest is as shown above.

希望这对正在学习的人有所帮助。

Hope this will be helpful to someone who is learning.

这篇关于来自服务器的反序列化XML响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆