Question

J'ai une classe simple, je suis en cours de sérialisation.

 [DataContract(Name = "Test", Namespace = "")]
 public class Test
 {
    [DataMember(Order = 0, Name = "Text")]
    public string Text { get; set; }

    public Test() {}
 }

Ceci élimine le XML suivant:

<Test>
   <Text>Text here</Text>
</Test>

Ce que je veux, c'est:

<Test>
   <Text type="MyType">Text here</Text>
</Test>

Comment ajouter des attributs aux éléments XML?

Merci d'avance.

Était-ce utile?

La solution

Vous ne pouvez pas ajouter d'attributs à un DataContract. Vous devez soit utiliser une classe qui implémente ISerializable, soit utiliser .Net XmlSerializer.

Autres conseils

Ce n'est pas vraiment une réponse, mais vous pouvez essayer d'implémenter IXmlSerializable pour contrôler totalement le format de sortie xml.

J'ai pu y parvenir en déclarant un XElement ayant des attributs définis. Ex:

public XElement Text { get; set;}

Ajoutez l'attribut type avec [XMLAttribute] et la valeur de l'élément avec [XmlText].

public class Test
{
    public text Text;

    public Test()
    {
        Text = new text();
    }

    [DataContract(Name = "Test", Namespace = "")]
    public class text
    {
        [XmlText]
        public string Text { get; set; }
        [XmlAttribute]
        public string type { get; set; }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top