2011-08-28 16 views
0

後,我送與我得到以下XML響應所需的參數要求:解析XML文件和填充物用價值

<content> 
    <main> 
     <IMGURL>image url</IMGURL> 
     <IMGTEXT>Click Here</IMGTEXT> 
     <TITLE>image title</TITLE> 
     <IMGLINK>image link</IMGLINK> 
    </main> 
</content> 

,我也做了以下兩類:

[Serializable] 
public class content 
{ 
    private Main _main; 
    public content() 
    { 
     _main = new Main(); 
    } 
    public Main Main 
    { 
     get { return _main; } 
     set { _main = value; } 
    } 
} 

[Serializable] 
public class Main 
{ 
    public string IMGURL { get; set; } 
    public string IMGTEXT { get; set; } 
    public string TITLE { get; set; } 
    public string IMGLINK { get; set; } 
} 

在調試時我可以看到在響應中我得到了想要的結果。但是,我有麻煩反序列化XML和填充對象。


電話的方法,包括:

public static class ImageDetails 
    { 
     private static string _url = ConfigurationManager.AppSettings["GetImageUrl"]; 

     public static content GetImageDetails(string ua) 
     { 
      var contenta = new content(); 
      _url += "&ua=" + ua; 
      try 
      { 
       WebRequest req = WebRequest.Create(_url); 
       var resp = req.GetResponse(); 
       var stream = resp.GetResponseStream(); 

       //var streamreader = new StreamReader(stream); 

       //var content = streamreader.ReadToEnd(); 



       var xs = new XmlSerializer(typeof(content)); 
       if (stream != null) 
       { 
        contenta = (content)xs.Deserialize(stream); 
        return contenta; 
       } 
      } 
      catch (Exception ex) 
      { 
      } 
      return new content(); 
     } 
    } 
+0

請告訴我們你已經嘗試了什麼。另外,XmlSerializer忽略'[Serializable]'。 –

+0

我已更新我的問題。另外,我很榮幸你花時間回答我的問題。我是你的粉絲! – Johancho

+0

粉絲?可怕的概念。建議:擺脫那個try/catch塊。另外,停止更改'_url'。如果你兩次打電話,你會有多個'ua'查詢參數。 –

回答

0

串行器是大小寫敏感的。您或者需要將屬性content.Main重命名爲main或將屬性[XmlElement("main")]添加到它。

+0

爲了記錄它是大小寫敏感的,你的代碼應該是「Public Main main {..}」,否則肯定不會反序列化 – Eddy

+0

你的回答是正確的。在遵循John的建議之後,我發現該對象已經以與XML相同的格式進行了序列化。然後我意識到我沒有改變財產的名稱。感謝你們!!! – Johancho