我试图弄清楚如何将以下类序列化为 XML(具体方式见下文):
[XmlRoot("Farm")]
public class Farm
{
[XmlArray]
[XmlArrayItem("Person", typeof(Person))]
[XmlArrayItem("Dog", typeof(Dog))]
public List<Animal> Animals { get; set; }
}
(假使,假设Dog
and Person
两者都源自Animal
,并且他们都有一个Name
装饰有的财产[XmlAttribute("Name")]
.)
我需要能够创建这个对象:
var myFarm = new Farm
{
Animals = new List<Animal> {
new Person { Name = "Bob" },
new Dog { Name = "Fido" }
}
};
...并将其序列化为以下文档:
<?xml version="1.0"?>
<Farm>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Farm>
但是,当我连载时myFarm
(结果输出到控制台)如下所示:
var serializer = new XmlSerializer(typeof(Farm));
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
serializer.Serialize(System.Console.Out, myFarm, namespaces);
...结果是这样的:
<?xml version="1.0"?>
<Farm>
<Animals>
<Person Name="Bob"/>
<Dog Name="Fido"/>
</Animals>
</Farm>
注意额外不需要的Animals元素。我该如何摆脱这个?更改 XML 架构不是一个选项,但更改代码可以。我真的很想能够解决这个问题,并希望有人知道一个简单的解决方案(或者知道没有一个简单的解决方案)。
Thanks!