我有一些我正在使用和反序列化的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; }
答案 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 {...}