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

問題は、プロパティリストを読み取れないように見えることです。エントリが1つだけ取得され、名前と値の両方にnullが含まれています。

これを機能させるために設定する必要のある魔法の属性はありますか?

4

3 に答える 3

14

MyMapは以下のように変更する必要があります。XmlArrayXmlArrayItemは魔法の属性です

[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

解決策を見つける1つの方法は、オブジェクトをコードに入力してからxmlにシリアル化し、スキーマがどのように見えるかを確認することです。また、xsd.exeを使用してクラスを自動生成することもできます。

于 2012-04-24T18:47:29.553 に答える