我有以下XML
<map version="1.0">
<properties>
<property name="color" value="blue" />
<property name="size" value="huge" />
<property name="texture" value="rugged" />
</properties>
</map>
我正在尝试编写可以将其反序列化的类,这就是我所拥有的:
[XmlRoot("map")]
public class MyMap
{
[XmlAttribute("version")]
public decimal Version { get; set; }
[XmlElement("properties")]
public List<MyProperty> Properties { get; set; }
}
public class MyProperty
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlAttribute("value")]
public string Value { get; set; }
}
问题是我似乎无法读取属性列表,我只得到一个条目,它在Name和Value中都为null。
我需要设置一些神奇属性才能让它发挥作用吗?
答案 0 :(得分:12)
您应该更改MyMap,如下所示。 XmlArray
和XmlArrayItem
是神奇的属性
[XmlRoot("map")]
public class MyMap
{
[XmlAttribute("version")]
public decimal Version { get; set; }
[XmlArray("properties")]
[XmlArrayItem("property")]
public List<MyProperty> Properties { get; set; }
}
答案 1 :(得分:2)
尝试:
而不是XmlElement[XmlArray("Properties")]
列表上的...&lt;&gt;属性。
答案 2 :(得分:1)
找到解决方案的一种方法是在代码中填充对象,然后将其序列化为xml,并查看架构的外观。您也可以使用xsd.exe自动生成类。