2017-06-29 51 views
-1
string xmlstr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" 
       + "<SampleModel>" 
       + "<FIELD name=\"ID\">9693</FIELD>" 
       + "<FIELD name=\"PARAM_NAME\">93223335</FIELD>" 
       + "<FIELD name=\"DATA_TYPE\">1</FIELD>" 
       + "<FIELD name=\"CREATE_DATE\">2017/2/22 14:43:20</FIELD>" 
       + "<FIELD name=\"UPDATE_DATE\">2017/2/22 14:43:20</FIELD>"     
       + "</SampleModel>"; 

[Serializable] 
[XmlRootAttribute("SampleModel")] 
public class SampleModel 
{ 
    public string ID { get; set; } 

    public string PARAM_NAME { get; set; } 

    public string DATA_TYPE { get; set; } 

    public string CREATE_DATE { get; set; } 

    public string UPDATE_DATE { get; set; } 
} 

public static object Deserialize (Type, type, string, XML) 
{ 
    try 
    { 
     using (StringReader Sr = new StringReader(XML)) 
     { 
      XmlSerializer xmldes = new XmlSerializer (type); 
      return xmldes.Deserialize(SR); 
     } 
    } 
    catch (Exception e) 
    { 
     return null; 
    } 
} 

我想使XML反序列化對象, 此方法失敗。定義屬性時,是否要添加屬性[XmlElement('FIELD')? 我不知道如何定義類結構。你可以幫我嗎?c#xml如何DeSerializer模型

+0

請** - > [編輯] < - **你的問題,包括你的錯誤消息。我在你的代碼中修正了各種大小寫錯誤 - 如果這代表了你的實際代碼,你應該先修正它們。 – Filburt

回答

0

你的XML和你的對象並不一樣。只有名爲FIELD的重複元素,沒有包含您爲其創建屬性的名稱的元素。

需要,反映了XML對象結構:

public class SampleModel 
{ 
    [XmlElement("FIELD")] 
    public List<Field> Fields { get; set; } 
} 

public class Field 
{ 
    [XmlAttribute("name")] 
    public string Name { get; set; } 

    [XmlText] 
    public string Value { get; set; } 
}