0

オブジェクトをデシリアライズしたい。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 ストリームを逆シリアル化したいと考えています。対応するコードを以下に示します。

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 に従って "User" というクラスを作成しました。

4

1 に答える 1

0

わかりました。こうやって :-

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 を渡す代わりに、完全な文字列を渡しました。あとは上図の通りです。

これが学習している人に役立つことを願っています。

于 2013-08-08T08:02:38.317 に答える