à l'aide de XmlArrayItem attribut sans XmlArray sur Serializable de classe C#
Je veux XML dans le format suivant:
<configuration><!-- Only one configuration node -->
<logging>...</logging><!-- Only one logging node -->
<credentials>...</credentials><!-- One or more credentials nodes -->
<credentials>...</credentials>
</configuration>
Je suis en train de créer une classe Configuration
qui a le [Serializable]
attribut. Pour sérialiser les informations d'identification des nœuds, j'ai le texte suivant:
[XmlArray("configuration")]
[XmlArrayItem("credentials", typeof(CredentialsSection))]
public List<CredentialsSection> Credentials { get; set; }
Cependant, quand je sérialiser ce XML, XML est le format suivant:
<configuration>
<logging>...</logging>
<configuration><!-- Don't want credentials nodes nested in a second
configuration node -->
<credentials>...</credentials>
<credentials>...</credentials>
</configuration>
</configuration>
Si je supprime le [XmlArray("configuration")]
ligne, je reçois le texte suivant:
<configuration>
<logging>...</logging>
<Credentials><!-- Don't want credentials nodes nested in Credentials node -->
<credentials>...</credentials>
<credentials>...</credentials>
</Credentials>
</configuration>
Comment sérialiser ce la façon dont je le veux, avec de multiples <credentials>
nœuds à l'intérieur du nœud racine simple <configuration>
? Je voulais le faire sans avoir à mettre en œuvre IXmlSerializable
et de faire de la sérialisation personnalisée. C'est ainsi que ma classe est décrite:
[Serializable]
[XmlRoot("configuration")]
public class Configuration : IEquatable<Configuration>
Vous devez vous connecter pour publier un commentaire.
Les éléments suivants doivent sérialiser correctement la façon dont vous le souhaitez. L'idée étant
[XmlElement("credentials")]
sur la liste. Je l'ai fait en prenant votre xml, la génération d'un schéma (xsd) dans Visual Studio. Puis en exécutant xsd.exe sur le schéma de générer une classe. (Et quelques petites modifications)donne la sortie suivante
List
, je dois utiliser leXmlArrayItem
attribut quelque part" que je n'ai même pas penser à faire un régulierXmlElement
.[XmlElement("credentials")] [DataMember] public List<CredentialsSection> credentials { get; set; }
. Il semble que WCF ignore le Xml* attributs pour la sérialisation. Toute suggestion?