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

本文关键字:XML 对象 序列化 集合 | 更新日期: 2023-09-27 18:16:23

尝试从第三方工具反序列化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>

然后在我的"Farm"对象中将XMLRoot定义为"Animals"。并为我的类"Animal"创建一个list属性。如果我定义这个属性(list AnimalCollection),我能得到的最好结果是一个包含3个未初始化的Animal对象的列表(没有设置值)。

在办公室里,我们能想到的最好的办法是在试图反序列化文件并像往常一样使用它之前,将一个节点作为流添加到文件中,但显然这看起来像是一个可怕的黑客。希望有更好的方式,只是我错过了。

我也考虑过手动阅读文档…但是还是希望有更优雅的方式

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

XmlSerializer serializer = new XmlSerializer(typeof(Animal[]), new XmlRootAttribute("Animals"));
public class Animal
{
    [XmlElement]
    public string Name;
    [XmlElement]
    public string Type;
}