根级别集合的XML对象序列化

时间:2011-12-02 14:52:56

标签: c# xml-serialization

尝试将XML文件从第三方工具反序列化为自定义软件类。问题是XML有点傻,因为“根”项实际上是集合的声明。我已经用XMLArray和其他定义做了很多工作来定义序列化,但这似乎不起作用。我能做的最好的事情是读取集合,但集合中的所有对象都没有用变量初始化。

以下是我所面临的一个例子:

XML:

<Animals>
  <Animal>
    <Name>Mr. Cow</Name>
    <Type>Cow</Type>
  </Animal>
  <Animal>
    <Name>Belle</Name>
    <Type>Cow</Type>
  </Animal>
  <Animal>
    <Name>Porky</Name>
    <Type>Pig</Type>
  </Animal>
</Animals>

然后我将我的XMLRoot定义为“Farm”对象中的“Animals”。并为我的“动物”类提供列表属性。如果我定义该属性(列出AnimalCollection),我能得到的最好的是3个未启动的Animal对象的列表(没有设置任何值)。

在办公室周围,我们可以做的最好的事情就是在尝试反序列化并像往常一样使用它之前将一个节点作为流添加到文件中,但显然这看起来像是一个可怕的黑客。希望有一种更好的方式让我失踪。

我也考虑过手动阅读文档......但又希望有一种更优雅的方式。

1 个答案:

答案 0 :(得分:3)

XmlSerializer serializer = new XmlSerializer(typeof(Animal[]), new XmlRootAttribute("Animals"));

public class Animal
{
    [XmlElement]
    public string Name;
    [XmlElement]
    public string Type;
}