2008-10-02 8 views
2

J'ai une classe qui ressemble à ceciY compris l'indice arrary dans la sérialisation XML

public class SomeClass 
{ 
    public SomeChildClass[] childArray; 
} 

qui sera sortie XML de la XMLSerializer comme ceci:

<SomeClass> 
    <SomeChildClass> 
     ... 
    </SomeChildClass> 
    <SomeChildClass> 
     ... 
    </SomeChildClass> 
</SomeClass> 

Mais je veux le XML pour ressembler à ceci :

<SomeClass> 
    <SomeChildClass index=1> 
     ... 
    </SomeChildClass> 
    <SomeChildClass index=2> 
     ... 
    </SomeChildClass> 
</SomeClass> 

Lorsque l'attribut d'index est égal à la position des éléments dans le tableau.

Je pourrais ajouter une propriété d'index à SomeChildClass avec l'attribut "XMLAttribute" mais alors je devrais me rappeler de faire une boucle dans le tableau et de définir cette valeur avant de sérialiser mon objet.

Y at-il un attribut que je peux ajouter ou un autre moyen de générer automatiquement l'attribut d'index pour moi?

Répondre

2

La meilleure approche serait de faire ce que vous avez dit et ajouter une propriété à la « SomeChildClass » comme celui-ci

[XmlAttribute("Index")] 
public int Order 
{ { get; set; } } 

Ensuite cependant vous ajoutez ces articles à votre tableau, assurez-vous que ensemble de cette get propriété . Ensuite, quand vous sérialiser .... Presto!

+0

Je souhaite qu'il y avait une meilleure solution mais c'est simple et fonctionne. – TonyB

+0

petite correction: [XmlAttribute ("index")] ("index" au lieu de "Item") –

+0

hehe..nice catch. Fait le changement! – Micah

0

Vous devrez peut-être vérifier l'implémentation de System.Xml.Serialization.IXmlSerializable pour cela.

0

Vous pouvez vérifier la classe XmlAttributeOverrides.