C# 具有数组属性的对象的Xml序列化
在下面的组合中,请注意序列化属性是小写的,并且根中的数组属性被相应地序列化,但其子元素不支持此修饰 我看到了这一点:C# 具有数组属性的对象的Xml序列化,c#,.net,xml,serialization,C#,.net,Xml,Serialization,在下面的组合中,请注意序列化属性是小写的,并且根中的数组属性被相应地序列化,但其子元素不支持此修饰 我看到了这一点: <engine> <servos> <servo> </servo> </servos> </engine> 但我得到的却是: <engine> <servos> <Servo> <!-- here is the proble
<engine>
<servos>
<servo>
</servo>
</servos>
</engine>
但我得到的却是:
<engine>
<servos>
<Servo> <!-- here is the problem-->
</Servo>
</servos>
</engine>
代码:
[XmlRoot(“引擎”)]
公共级引擎{
[XmlArray(“伺服”)]
公共列表服务器{
获取{返回伺服;}
设置{servos=value;}
}
}
[XmlRoot(“伺服”)]//忽略小写装饰的子级
公共级伺服{
}
按属性指示序列化的正确方法是什么?您必须将XmlArrayItem属性添加到
伺服
属性:
[XmlArrayItem( "servo" )]
[XmlArray("servos")]
public List<Servo> Servos {
get;
set ;
}
}
[XmlArrayItem(“伺服”)]
[XmlArray(“伺服”)]
公共列表服务器{
得到;
设置
}
}
虽然@toATwork给出的答案有效,但我更喜欢这样,因为在这种情况下,属性XmlArrayItem的意图比XmlType更清楚。
[XmlArrayItem( "servo" )]
[XmlArray("servos")]
public List<Servo> Servos {
get;
set ;
}
}