5

我有以下 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; }
}

问题是我似乎无法阅读属性列表,我只得到一个条目,它的名称和值都为空。

我需要设置一些魔法属性才能让它工作吗?

4

3 回答 3

14

您应该如下更改 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; }
}
于 2012-04-24T18:48:06.617 回答
2

而不是 XmlElement,请尝试:

[XmlArray("Properties")]

...在 List<> 属性上。

于 2012-04-24T18:47:38.577 回答
1

找到解决方案的一种方法是在代码中填充对象,然后将其序列化为 xml,然后查看模式的外观。你也可以使用 xsd.exe 来自动生成你的类。

于 2012-04-24T18:47:29.553 回答