c#xml如何DeSerializer模型

时间:2017-06-29 11:37:21

标签: c# xml

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 Deserialize对象, 此方法失败。在定义属性时,是否要添加属性[XmlElement(&#39; FIELD&#39;)? 我不知道如何定义类结构。你能救我吗?

1 个答案:

答案 0 :(得分: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; }
}