我有一些正在使用和反序列化的 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; }
最佳答案
通常:
[XmlAttribute]
(带有可选的名称、命名空间等)就是您所追求的。
但是,您不能直接在集合上使用它。相反,您需要为 Bars 提供一个包装类,其中包含属性和:
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 {...}
关于c# - 反序列化 XML,如何访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003847/