【问题标题】:Xml serialization of objects with array property具有数组属性的对象的 XML 序列化
【发布时间】:2014-06-18 13:55:53
【问题描述】:

在下面的组合中,请注意序列化属性是小写的,并且根中的数组属性被相应地序列化,但它的子元素不遵守这种装饰。

我猜到了:

<engine>
  <servos>
    <servo>
    </servo>
  </servos>
</engine>

但是我得到了这个:

<engine>
  <servos>
    <Servo> <!-- here is the problem-->
    </Servo>
  </servos>
</engine>

代码:

    [XmlRoot( "engine" )]
    public class Engine {

    [XmlArray( "servos" )]
    public List<Servo> Servos { 
        get { return servos; } 
        set { servos = value; } 
        }
    }

    [XmlRoot( "servo" )] //Child ignoring lowercase decoration 
    public class Servo {
    }

属性指示的正确序列化方法是什么?

【问题讨论】:

标签: c# .net xml serialization


【解决方案1】:

您必须将 XmlArrayItem 属性添加到 Servos 属性:

 [XmlArrayItem( "servo" )]
 [XmlArray("servos")]
 public List<Servo> Servos { 
     get;
     set ;
     }
 }

【讨论】:

  • 虽然@toATwork 指出的答案有效,但我更喜欢这个,因为在这种情况下,属性 XmlArrayItem 的意图比 XmlType 更清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 2021-11-12
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多