来自服务器的反序列化XML响应 [英] Deserialise XML response from server
本文介绍了来自服务器的反序列化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屋!
查看全文