je une simple classe dérivée d'une liste générique de chaîne comme suit:sérialiser une collection générique spécifiant les noms d'éléments pour les éléments de la collection
[Serializable]
[System.Xml.Serialization.XmlRoot("TestItems")]
public class TemplateRoleCollection : List<string>
{
}
quand je sérialisez, je reçois le code XML suivant:
<TestItems>
<string>cat</string>
<string>dog</string>
<string>wolf</string>
</TestItems>
Existe-t-il un moyen de remplacer le nom de l'élément XML utilisé pour la sérialisation des éléments de la collection? Je voudrais être produit le code XML suivant:
<TestItems>
<TestItem>cat</TestItem>
<TestItem>dog</TestItem>
<TestItem>wolf</TestItem>
</TestItems>
+1 Travaillé parfaitement. Merci. –
Je viens de rencontrer ce problème. Y at-il un moyen de le faire et toujours hériter d'une liste? Cette réponse fonctionne bien, mais est une solution de contournement plutôt que la solution que je cherchais. Dans mon cas c'est une liste d'un type personnalisé (non-primitif), qui est déjà marqué avec l'attribut [XmlRoot], donc j'ai été surpris quand le sérialiseur ne respectait pas cela pour une classe de List. –
si618
@Si: Le 'XmlRootAttribute' ne fait pas ce que vous croyez. Il contrôle uniquement le nom de l'élément racine (élément de document AKA) lorsque vous sérialisez la classe par elle-même. Peut-être cherchez-vous le 'XmlTypeAttribute'? – Aaronaught