【问题标题】:Serialization of list inside parent node (flattening of collection)父节点内列表的序列化(集合展平)
【发布时间】:2016-04-19 08:30:01
【问题描述】:

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

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

目前,我有一个class Person,里面的名字是List&lt;string&gt; Addresses

我认为XmlSerializer 默认情况下会创建一个&lt;Addresses&gt; 节点,它将每个地址都保存为子元素,所以我会得到:

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

不是我需要的。

我的问题是,是否可以展平&lt;Person&gt; 中的所有地址?

【问题讨论】:

标签: c# .net xml serialization collections


【解决方案1】:

使用 XmlElement 而不是 XmlArray,如下面的代码。 XmlArray 增加了一层额外的标签。

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

【讨论】:

  • 这种格式可以反序列化吗?我的意思是,序列化程序如何知道它们是集合的元素?
  • 按字符串[]类型,这是一个数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多