我有一组要序列化为 XML 文件的类。它看起来像这样:
public class Foo
{
public List<Bar> BarList { get; set; }
}
bar 只是属性集合的包装器,如下所示:
public class Bar
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
我想标记它,以便它输出到一个 XML 文件 - 这将用于持久性,也可以通过 XSLT 将设置呈现为一个很好的人类可读形式。
我想得到一个很好的 XML 表示,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<BarList>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
<Bar>
<Property1>Value</Property1>
<Property2>Value</Property2>
</Bar>
</Barlist>
</Foo>
Barlist 中的所有 Bars 都在哪里写出了它们的所有属性。我相当确定我需要对类定义进行一些标记才能使其工作,但我似乎找不到正确的组合。
我已经用属性标记了 Foo
[XmlRoot("Foo")]
和list<Bar>
带有属性的
[XmlArray("BarList"), XmlArrayItem(typeof(Bar), ElementName="Bar")]
试图告诉序列化器我想要发生什么。但是,这似乎不起作用,我只得到一个空标签,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Foo>
<Barlist />
</Foo>
我不确定我使用自动属性的事实是否应该有任何影响,或者使用泛型是否需要任何特殊处理。我已经让它与更简单的类型(如字符串列表)一起使用,但到目前为止我还没有找到类列表。