Sérialiser Bien que Xml Attribut dans l'Élément
J'ai la classe suivante:
[Serializable]
public class SomeModel
{
[XmlElement("SomeStringElementName")]
public string SomeString { get; set; }
[XmlElement("SomeInfoElementName")]
public int SomeInfo { get; set; }
}
Qui (lorsque rempli avec des données de test) et Sérialisé à l'aide de XmlSerializer.Serialize() les résultats dans le fichier XML suivant:
<SomeModel>
<SomeStringElementName>testData</SomeStringElementName>
<SomeInfoElementName>5</SomeInfoElementName>
</SomeModel>
Ce que j'ai besoin d'avoir est la suivante:
<SomeModel>
<SomeStringElementName Value="testData" />
<SomeInfoElementName Value="5" />
</SomeModel>
Est-il un moyen de spécifier ce que les attributs sans avoir à écrire de ma propre code de sérialisation?
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin des classes wrapper:
ou une approche plus générique si vous préférez:
Et puis:
produira:
T
àSomeInfo<T>
et vice versa.Genre, de l'utilisation de la
XmlAttribute
au lieu deXmlElement
, mais il ne ressemble pas à ce que vous voulez. Il ressemble à la suivante:La seule façon que je peux penser à réaliser ce que vous voulez (natif) serait pour avoir des propriétés de pointage pour les objets nommés SomeStringElementName et SomeInfoElementName où la classe contient une seule getter nommé "valeur". Vous pourriez prendre un peu plus loin et utiliser DataContractSerializer de sorte que les classes wrapper peut être privé. XmlSerializer de ne pas lire les propriétés privées.