2013-08-07 4 views
0

개체를 deserialise하고 싶습니다. 그러나서버에서 Deserialise XML 응답

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); 
    } 

, 내가 파일을 deserialise 싶지 않아, 오히려 내가 응답으로 서버에서 얻을 XML 스트림은, 코드가 여기에 표시 대응 :

나는 msdn.com에 다음 코드를 보았다
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에 따라 "사용자"라는 클래스를 만들었습니다.

답변

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을 전달하는, 나는 전체 문자열을 통과 - : 이는 방법이다. 나머지는 위 그림과 같습니다.

희망은 배우는 사람에게 도움이되기를 바랍니다.