在将XmlSerializer用于列表时,我可以省略干预级别吗?

时间:2011-02-14 17:02:45

标签: c# .net xml xmlserializer

我的问题最好通过一个简单的例子来描述。考虑这样的2个类:

class Order {
  [XmlAttribute] int orderId;
  [XmlAttribute] int customerId;
  List<OrderItem> items;
}

class OrderItem {
  [XmlAttribute] int partCode;
  [XmlAttribute] int quantity;
}

使用XmlSerializer,这将序列化为如下:

<order orderId="...", customerId="..." >
  <Items>
    <orderItem partCode="..." quantity="..." />
  </Items>
</order>

我想要做的是删除&lt; Items&gt;等级,以便&lt; orderItem&gt;元素直接在相应的&lt; order&gt;

下面

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:5)

使用XmlElement属性:

class Order {
  [XmlAttribute] int orderId;
  [XmlAttribute] int customerId;
  [XmlElement]
  List<OrderItem> items;
}

使用此属性,您还可以为OrderItem对象指定自定义元素名称,甚至为OrderItem

的每个子类型指定不同的元素名称