2014-06-18 4 views
0

Dans la composition suivante, notez que les attributs de sérialisation sont en minuscules et que la propriété tableau de la racine est sérialisée en conséquence, mais que son élément enfant n'honore pas cette décoration.Sérialisation Xml des objets avec la propriété tableau

Je spected ceci:

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

Mais au lieu que je reçois ceci:

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

code:

[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 { 
    } 

Quelle est la bonne façon de sérialisation comme indiqué par l'attribut?

+0

double possible (http://stackoverflow.com/questions/1440845/xmlroot- [XmlRoot() pour Xml serilization ne fonctionne pas] for-xml-serilization-does-not-work) – toATwork

Répondre

0

Vous devez ajouter attribut XmlArrayItem à la propriété Servos:

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

Bien que la réponse pointée par @toATwork fonctionne, je préfère cela parce que l'intention de l'attribut XmlArrayItem est plus claire que XmlType pour ce cas. –

Questions connexes