带有可选段的XML序列化

时间:2016-02-24 07:13:36

标签: c# xml-serialization

当我想在下面序列化为XML时遇到问题,因为段E1WPU03是可选的,但是当它有值时我需要将它放在段E1WPU02下

我已经尝试了两天,但最终它首先编写段落E1WPU02然后编写段E1WPU03并且无法正常工作

我该怎么做?

correct XML

1 个答案:

答案 0 :(得分:1)

named-pipes通常不会交错元素。但是,您可以使用XmlSerializer和多个List<>来指定类型:

[XmlElement(...)]

class Program { static void Main() { var root = new MyXmlRoot { Items = { new Bar { }, new Blap { }, new Bar { }, } }; var ser = new XmlSerializer(typeof(MyXmlRoot)); ser.Serialize(Console.Out, root); } } public abstract class Foo { } // base type used for the list public class Bar : Foo { // more props here } public class Blap : Foo { // more props here } public class MyXmlRoot { private readonly List<Foo> items = new List<Foo>(); [XmlElement("E1WPUO2", typeof(Bar))] [XmlElement("E1WPUO3", typeof(Blap))] public List<Foo> Items { get { return items; } } } 等其他元素如果不需要交错,则不需要进入E1WPU01 - 它们可以直接在Items上(正如您可能已经拥有的那样)。< / p>