我提供的XML格式我真的很想反序列化:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<data version='1'>
<id>1</id>
<property name='firstName'>John</property>
<property name='lastName'>Smith</property>
</data>
我的问题是涉及“属性”元素。我从来不需要处理类似的事情,所以我不确定应该如何构造我的课程。我通常会选择:
public class data
{
public string id { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
}
然后像这样反序列化:
var recordSerializer = new XmlSerializer(typeof(data));
var myData = (data)recordSerializer.Deserialize(reader);
我确实尝试创建自定义的“属性”类,但是我不知道从那里去哪里:
public class property
{
public string name { get; set; }
public string value { get; set; }
}
您可以这样做
public class data
{
public string id { get; set; }
[XmlElement(ElementName = "property")]
public List<property> lista { get; set; }
}
public class property
{
[XmlAttribute("name")]
public string name { get; set; }
[XmlText( typeof(string))]
public string value { get; set; }
}
如果不使用列表,则必须在xml中添加名称空间以区分属性
为数据类提供属性类的数组
public class data
{
public string id { get; set; }
[XmlElement("property")]
public property[] Properties { get; set; }
}