2009-09-22 7 views
1

Je fais un petit jeu de cartes qui nécessite une liste de scores élevée qui est enregistrée dans un fichier externe, et chargée à partir de celui-ci au début de chaque jeu.mettre Custom Class Array dans un ensemble de données ou XML (C#)

j'ai écrit un fichier XML dans ce format:

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

J'ai compris comment créer un jeu de données, utilisez dataset.readxml, pour charger le XML en elle, créer une ligne, puis écrire chaque ligne dans un tableau de HighScores:

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

J'ai également compris comment vérifier si les jeux highscore est plus élevé que le plus bas du tableau.

Je travaille sur le tri, mais comment puis-je obtenir le tableau HighScore[] dans un ensemble de données puis dans le XML, ou même à partir du tableau directement à l'ensemble de données? J'ai essayé de Google, mais je n'ai pas trouvé ce que je veux.

Répondre

1

Avez-vous vraiment besoin d'utiliser un DataSet uniquement pour sérialiser votre baie? Si vous avez seulement besoin de sérialiser un tableau, vous pouvez utiliser la sérialisation Xml simple. Voici un exemple:

[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); 
     } 
    } 
Questions connexes