2017-06-29 2 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; 
    } 
} 

Ich möchte das Objekt XML Deserialize, Diese Methode schlägt fehl. Möchten Sie beim Definieren von Eigenschaften die Eigenschaft [XmlElement ('FIELD') hinzufügen? Ich weiß nicht, wie man die Klassenstruktur definiert. Kannst du mir helfen?C# xml wie DeSerializer-Modell

+0

Bitte ** -> [Bearbeiten] <- ** Ihre Frage ein und schließen Sie die Fehlermeldung Sie erhalten. Ich habe verschiedene Großschreibung Fehler in Ihrem Code behoben - wenn dies Ihren tatsächlichen Code darstellt, sollten Sie diese zuerst beheben. – Filburt

Antwort

0

Ihr XML und Ihr Objekt sind nicht wirklich gleich. Es gibt nur wiederholte Elemente mit dem Namen FIELD. Es gibt keine Elemente mit den Namen, für die Sie Eigenschaften erstellt haben.

Sie benötigen eine Objektstruktur, die die XML-Spiegel:

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