我正在制作一个小型纸牌游戏,需要一个保存在外部文件中的高分列表,并在每个游戏开始时从中加载。
我用这种格式写了一个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,甚至从数组直接到数据集?我试过谷歌,但我没找到我想要的东西。
答案 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);
}
}