2009-05-24 5 views
3

J'écris une application en C# pour sérialiser et un tableau de double ou de flottant vers un seul élément XML qui est une liste de valeurs séparées par des espaces dans le tableau.C# XML Sérialisation d'un élément double [] à un seul élément délimité par un espace

double[] d = new double[4] { 1.0, 2.0, 3.0, 4.0 }; 

à l'élément XML:

<ArrayOfDouble type="double">1.0 2.0 3.0 4.0</ArrayOfDouble> 

Je suis en train d'utiliser le XmlSerializer pour effectuer la sérialisation. Toute aide sur la façon de faire cela serait tout simplement grandement appréciée.

Tim

Répondre

4

Vous pouvez essayer quelque chose comme ce qui suit. Mon exemple utilise LINQ. Si vous utilisez VS2005 ou plus tôt faites le moi savoir et je mettrai à jour la réponse.

class Example { 
    [XmlIgnore] 
    public double[] DoubleValue { get ... set ... } 

    public string ArrayOfDouble { 
    get { return DoubleValue.Select(x => x.ToString()).Aggregate((x,y) => x + " " + y); } 
    set { Doublevalue = value.Split(' ').Select(x => Double.Parse(x)).ToArray(); } 
    } 
} 
+0

Très élégante solution +1 –

+0

Je développe réellement sous SharpDevelop v2.2.1 Merci pour votre suggestion. –

+3

Notez que lorsque vous écrivez un code de sérialisation, vous devez faire très attention à la culture, en spécifiant généralement "invariant". Je serais également un peu prudent sur la concaténation de chaînes en boucle (préférant StringBuilder); parfois quelques lignes supplémentaires en valent vraiment la peine. –

Questions connexes