我有一个对象,其中包含抽象“aninamls”列表。 IE。
var animals = new Animals
{
new Bird{ TailFeatherColour = "Blue" },
new Cat{ Colour = "Brown" }
};
使用 xmlserializer,是否可以将上面的内容序列化为以下 xml,
<?xml version="1.0" encoding="utf-16"?>
<Animals>
<Bird>
<TailFeatherColour>Blue</TailFeatherColour>
</Bird>
<Cat>
<Colour>Brown</Colour>
</Cat>
</Animals>
目前,我只能得到以下内容:
<?xml version="1.0" encoding="utf-16"?>
<Animals>
<Animal xsi:type="Bird">
<TailFeatherColour>Blue</TailFeatherColour>
</Animal>
<Animal xsi:type="Cat">
<Colour>Brown</Colour>
</Animal>
</Animals>
The XmlElementAttribute http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.aspx and XmlArrayItemAttribute http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx当列表是另一个类中的字段时,可以使用属性来执行此操作(区别在于前者不会在列表元素周围放置容器元素,而后者会放置容器元素)。
我不相信你可以只用一个列表来实现你想要的,即当被序列化的实际对象是一个列表时(尽管我在这里可能是错的),但是你可以通过在类中嵌套一个列表来伪造它,例如
[XmlRoot("Animals")]
[XmlType("Animals")]
public class AnimalsWrapper
{
[XmlElement(typeof(Bird), ElementName = "Bird")]
[XmlElement(typeof(Cat), ElementName = "Cat")]
public List<Animal> Animals;
}
这是一个有点笨拙的黑客,但会序列化到您正在寻找的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)