反序列化XML,如何访问属性?

时间:2011-05-14 18:10:33

标签: c# xml-serialization

我有一些我正在使用和反序列化的XML。

<Foo>
    <Bars Baz="9">
        <Bar>...</Bar>
        <Bar>...</Bar>
    </Bars>
</Foo>

目前我将其反序列化为此类:

[XmlRoot("Foo")]
public class Foo
{
    public Foo() { }

    [XmlArrayItem("Bar")]
    public Bar[] Bars { get; set; }
}

除了我没有捕获@Baz的值之外,这很好用。我想将Baz添加为Foo的属性,但我不确定如何。我将Baz属性设置为什么属性以正确反序列化xml?

[WhatAttributeGoesHere("?")]
public int Baz { get; set; }

1 个答案:

答案 0 :(得分:9)

通常:

[XmlAttribute]

(带有可选的名称,命名空间等)就是您的目标。

但是,您不能直接在集合上使用它。你需要有一个Bars的包装类,其属性和a:

public class Foo {
    public BarWrapper Bars {get;set;}
}
public class BarWrapper {
    private readonly List<Bar> bars = new List<Bar>();
    [XmlElement("Bar")]
    public List<Bar> Items {get{return bars;}}

    [XmlAttribute]
    public int Baz {get;set;}
}
public class Bar {...}