【发布时间】:2010-09-15 18:53:13
【问题描述】:
我有一组要序列化为 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>
我不确定我使用自动属性这一事实是否会产生任何影响,或者使用泛型是否需要任何特殊处理。我已经让它与更简单的类型(如字符串列表)一起使用,但到目前为止我还没有找到类列表。
【问题讨论】:
标签: c# xml serialization