Avatar billede gulbaek Nybegynder
04. november 2004 - 09:28 Der er 3 kommentarer og
1 løsning

XML Serialization af 2D double array

hejsa, nogen der lige hurtigt kan hjælpe mig med en kode stump, til hvordan jeg gør følgende klar til XML Serialization

private double[,] resultArray;

public double[,] ResultArray
{
    get{return resultArray;}
    set{resultArray = value;}
}
Avatar billede gulbaek Nybegynder
04. november 2004 - 11:13 #1
Her er min som den ser ud indtil videre.

using System;
using System.Xml.Serialization;



[System.Xml.Serialization.XmlRootAttribute()]
public class Result
{
    private string modelName;
    private int n;
    private double[][] resultArray;

   

    public Result()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    [XmlArrayItem("test", typeof(double[]))]
    public double[][] ResultArray
    {
        get{return resultArray;}
        set{resultArray = value;}
    }

    [XmlElementAttribute()]
    public string ModelName
    {
        get{return modelName;}
        set{modelName = value;}   
    }

    [XmlElementAttribute()]
    public int N
    {
        get{return n;}
        set{n = value;}   
    }
}
Avatar billede gulbaek Nybegynder
04. november 2004 - 11:14 #2
using System.Collections;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
class Start
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Result rs = new Result();
        rs.ModelName = "Markov Chain";
        rs.N = 2;
        double[][] test = new double[3][];
        test[0] = new double[] { 0.10, 0.20, 0.10, 0.50, 0.20};
        test[1] = new double[] { 0.13, 0.24, 0.20, 0.50, 0.30};
        test[2] = new double[] { 0.14, 0.23, 0.60, 0.70, 0.70};



        XmlSerializer serializer = new XmlSerializer(typeof(Result));
        TextWriter tr = new StreamWriter("test2.xml");
        serializer.Serialize(tr, test);
        tr.Close();
    }
}
Avatar billede gulbaek Nybegynder
04. november 2004 - 11:18 #3
ovenstående resultere i at visual studio bruger alle resourserne og den aldrig generere en xml fil. Jeg har også ændre [,] til [][] da jeg har læst mig frem til at det ikke er muligt at bruge [,]

Hov glemte lidt kode.

indsæt  rs.ResultArray = test;

inden XmlSerializer............
Avatar billede gulbaek Nybegynder
04. november 2004 - 12:09 #4
Løste det selv.

Her er den korrekte kode, hvis nogen skulle være interesseret.

Result.cs
using System;
using System.Xml.Serialization;



[System.Xml.Serialization.XmlRootAttribute()]
public class Result
{
    private string modelName;
    private int n;
    private double[][] resultArray;

   

    public Result()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    [XmlArrayItem("test", typeof(double[]))]
    public double[][] ResultArray
    {
        get{return resultArray;}
        set{resultArray = value;}
    }

    [XmlElementAttribute()]
    public string ModelName
    {
        get{return modelName;}
        set{modelName = value;}   
    }

    [XmlElementAttribute()]
    public int N
    {
        get{return n;}
        set{n = value;}   
    }
}

Main.cs

using System;
using System.Collections;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
class Start
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Result rs = new Result();
        rs.ModelName = "Markov Chain";
        rs.N = 2;
        double[][] test = new double[3][];
        test[0] = new double[] { 0.10, 0.20, 0.10, 0.50, 0.20};
        test[1] = new double[] { 0.13, 0.24, 0.20, 0.50, 0.30};
        test[2] = new double[] { 0.14, 0.23, 0.60, 0.70, 0.70};

        rs.ResultArray = test;

        try
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Result));
            TextWriter tr = new StreamWriter("test2.xml");
            serializer.Serialize(tr, rs);
            tr.Close();
        }
        catch(Exception e)
        {
            Console.WriteLine(e.ToString());
        }

        Result newrs = new Result();
        FileStream f = new FileStream("test2.xml", FileMode.Open);
        XmlSerializer newSr = new XmlSerializer(typeof(Result));

        newrs = (Result)newSr.Deserialize(f);
        f.Close();
        Console.WriteLine(newrs.ModelName);
        Console.WriteLine(newrs.N);
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester