オブジェクトをデシリアライズしたい。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" というクラスを作成しました。