父节点内列表的序列化(集合展平)

时间:2016-04-19 08:30:02

标签: c# .net xml serialization collections

我必须生成这样的XML结构(使用.NET序列化):

<Person>
   <Name>John</John>
   <Address>Address1</Address>
   <Address>Address2</Address>
   <Address>Address3</Address>
</Person>

目前,我的class Person名称为List<string> Addresses

我认为XmlSerializer默认会创建一个<Addresses>节点,该节点将每个地址都保存为子元素,所以我会这样做:

<Person>
   <Name>John</John>
   <Addresses>           
      <Address>Address1</Address>
      <Address>Address2</Address>
      <Address>Address3</Address>
   </Addresses>
</Person>

不是我需要的东西。

我的问题是,是否可以展平<Person>内的所有地址?

1 个答案:

答案 0 :(得分:0)

使用XmlElement代替XmlArray,如下面的代码。 XmlArray添加了一层额外的标签。

    [XmlRoot("Person")]
    public class Person
    {
        [XmlElement("Name")]
        public string name {get; set;}
        [XmlElement("Address")]
        public string[] address {get; set;}
    }