将自定义类数组放入数据集或XML(C#)

时间:2009-09-22 08:37:44

标签: c# xml arrays dataset

我正在制作一个小型纸牌游戏,需要一个保存在外部文件中的高分列表,并在每个游戏开始时从中加载。

我用这种格式写了一个XML文件:

<highscore>
<name>bob</name>
<score>10</score>
<time>3:42</time>
<date>21-09-09</date>
</highscore>

我已经想出如何创建数据集,使用dataset.readxml,将XML加载到其中,创建一行,然后将每一行写入HighScores数组:

class HighScore
{
string nameString, timeString, dateString;
int scoreInt;
}

我还想出了如何检查游戏的高分是否高于数组中的最低分。

我正在进行排序,但是如何将HighScore[]数组放回到数据集中然后再放入XML,甚至从数组直接到数据集?我试过谷歌,但我没找到我想要的东西。

1 个答案:

答案 0 :(得分:1)

你真的需要使用DataSet来序列化你的阵列吗?如果您只需要序列化数组,则可以使用简单的Xml序列化。这是一个例子:

    [XmlRoot("highScore")]
    public class HighScore
    {
        [XmlElement("name")]
        public string Name { get; set; }
        [XmlElement("dateTime")]
        public DateTime Date { get; set; }
        [XmlElement("score")]
        public int Score { get; set; }
    }

    static void Main(string[] args)
    {

        IList<HighScore> highScores = new[] { 
            new HighScore {Name = "bob", Date = DateTime.Now, Score = 10 },
            new HighScore {Name = "john", Date = DateTime.Now, Score = 9 },
            new HighScore {Name = "maria", Date = DateTime.Now, Score = 28 }
        };


        // serializing Array
        XmlSerializer s = new XmlSerializer(typeof(HighScore[]));
        using (Stream st = new FileStream(@"c:\test.xml", FileMode.Create))
        {
            s.Serialize(st, highScores.ToArray());
        }

        // deserializing Array
        HighScore[] highScoresArray;
        using (Stream st = new FileStream(@"c:\test.xml", FileMode.Open))
        {
            highScoresArray = (HighScore[])s.Deserialize(st);
        }

        foreach (var highScore in highScoresArray)
        {
            Console.WriteLine("{0}, {1}, {2} ", highScore.Name, highScore.Date, highScore.Score);
        }
    }