2010-10-13 3 views
2

J'essaie de sérialiser mon objet en xml. Un serializer semble sérialiser tous les membres de données en tant qu'enfants, mais je veux sérialiser tous les membres en tant qu'attributs, pas en tant qu'enfants.Comment sérialiser les membres de classe en tant qu'attributs à xml en C#

Voici un exemple de code:

[DataContract] 
public class MyDataClass 
{ 
    [DataMember] 
    int foo = 24; 
    [DataMember] 
    string bar = "brabrabra"; 
} 

Ce sera sérialisé comme suit xml lorsque j'utilise DataContractSerializer:

<MyDataClass xmlns="..." xmlns:i="..."> 
    <foo>24</foo> 
    <bar>brabrabra</bar> 
</MyDataClass> 

Cependant, je veux sérialisation comme suit en quelque sorte xml:

<MyDataClass xmlns="..." xmlns:i="..." foo="24" bar="brabrabra" /> 

Existe-t-il un moyen de sérialiser comme ça? Ou, devrais-je écrire mon propre sérialiseur pour le réaliser? Pour référence, j'utilise le sérialiseur DataContract dans cet exemple, mais je peux le remplacer par un XmlSerializer normal ou un autre s'il y en a un meilleur.

J'espère que quelqu'un sait à ce sujet.

Aki

Répondre

2

Vous pouvez utiliser un simple XmlSerializer pour y parvenir, de la manière suivante:

[Serializable] 
public class SerializationTest2 
{ 
    [XmlAttributeAttribute] 
    public string MemberA { get; set; } 
} 

[Test] 
public void TestSerialization() 
{ 
    var d2 = new SerializationTest2(); 
    d2.MemberA = "test"; 
    new XmlSerializer(typeof(SerializationTest2)) 
     .Serialize(File.OpenWrite(@"c:\temp\ser2.xml"), d2); 
} 
+0

Parfait! Merci pour votre réponse exacte. = D – Aki24x

Questions connexes