当我想在下面序列化为XML时遇到问题,因为段E1WPU03是可选的,但是当它有值时我需要将它放在段E1WPU02下
我已经尝试了两天,但最终它首先编写段落E1WPU02然后编写段E1WPU03并且无法正常工作
我该怎么做?
答案 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>