Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier
txt) contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier
txt) contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier
txt) contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Il existe plusieurs façon de faire çà... La plus simple pour un débutant,
c'est de créer un DataSet typé avec une table "score" et 2 colonnes "noms"
et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu remplis
ce DataTable et tu l'enregistres via la méthode DataTable.WriteXml()
Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Il existe plusieurs façon de faire çà... La plus simple pour un débutant,
c'est de créer un DataSet typé avec une table "score" et 2 colonnes "noms"
et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu remplis
ce DataTable et tu l'enregistres via la méthode DataTable.WriteXml()
Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Il existe plusieurs façon de faire çà... La plus simple pour un débutant,
c'est de créer un DataSet typé avec une table "score" et 2 colonnes "noms"
et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu remplis
ce DataTable et tu l'enregistres via la méthode DataTable.WriteXml()
Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Bonjour,
Gilles TOURREAU a écrit:Il existe plusieurs façon de faire çà... La plus simple pour un
débutant, c'est de créer un DataSet typé avec une table "score" et 2
colonnes "noms" et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu
remplis ce DataTable et tu l'enregistres via la méthode
DataTable.WriteXml()
Je pense avoir réussi à écrire le fichier:
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Là par contre je ne comprend pas. Faut-il faire comme cela ?
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
dt.ReadXml("CollecteurData.xml");
Mais après comment je fait pour remplir ma class ?
Bonjour,
Gilles TOURREAU a écrit:
Il existe plusieurs façon de faire çà... La plus simple pour un
débutant, c'est de créer un DataSet typé avec une table "score" et 2
colonnes "noms" et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu
remplis ce DataTable et tu l'enregistres via la méthode
DataTable.WriteXml()
Je pense avoir réussi à écrire le fichier:
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");
Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Là par contre je ne comprend pas. Faut-il faire comme cela ?
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
dt.ReadXml("CollecteurData.xml");
Mais après comment je fait pour remplir ma class ?
Bonjour,
Gilles TOURREAU a écrit:Il existe plusieurs façon de faire çà... La plus simple pour un
débutant, c'est de créer un DataSet typé avec une table "score" et 2
colonnes "noms" et "score".
Tu crée une instance du DataTable typé généré par VisualStudio, tu
remplis ce DataTable et tu l'enregistres via la méthode
DataTable.WriteXml()
Je pense avoir réussi à écrire le fichier:
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");Pour charger le contenu d'un fichier XML dans un DataTable, utilise la
méthode dual : ReadXml()
Là par contre je ne comprend pas. Faut-il faire comme cela ?
DataTable dt = new DataTable("Top10");
dt.Columns.Add("Nom");
dt.Columns.Add("Score");
dt.Columns.Add("Niveau");
dt.ReadXml("CollecteurData.xml");
Mais après comment je fait pour remplir ma class ?
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Et c'est tout !
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Et c'est tout !
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Et c'est tout !
Bonjour,
Gilles TOURREAU a écrit:MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Cela c'est bon ça marche le fichier est bien écrit.Et c'est tout !
En fait non car je doit remplir ma class (Top10), puis grâce à elle
remplir mon listView1.
Bonjour,
Gilles TOURREAU a écrit:
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");
MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Cela c'est bon ça marche le fichier est bien écrit.
Et c'est tout !
En fait non car je doit remplir ma class (Top10), puis grâce à elle
remplir mon listView1.
Bonjour,
Gilles TOURREAU a écrit:MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
for (int i = 0; i < 10; i++)
{
dt.Rows.AddScoreRow(_top[i].Nom, _top[i].Score, _top[i].Niveau);
}
dt.WriteXml("CollecteurData.xml");MonDataSet.ScoreDataTable dt = new MonDataSet.ScoreDataTable();
dt.ReadXml("CollecteurData.xml");
Cela c'est bon ça marche le fichier est bien écrit.Et c'est tout !
En fait non car je doit remplir ma class (Top10), puis grâce à elle
remplir mon listView1.
Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier txt)
contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier txt)
contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Bonjour,
Je souhaite créer une base de données xml (c'est mieux que 2 fichier txt)
contenant un tabeau de score: 10 noms + 10 scores.
Comment faire ?
Valentin
Maintenant si tu veux vraiement garder ta classe Top10, tu peux te passer
de l'utilisation d'un DataSet et utiliser les classes de l'espace de nom :
System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une fichier
Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Si tu as des questions n'hésites pas !
Maintenant si tu veux vraiement garder ta classe Top10, tu peux te passer
de l'utilisation d'un DataSet et utiliser les classes de l'espace de nom :
System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une fichier
Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Si tu as des questions n'hésites pas !
Maintenant si tu veux vraiement garder ta classe Top10, tu peux te passer
de l'utilisation d'un DataSet et utiliser les classes de l'espace de nom :
System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une fichier
Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Si tu as des questions n'hésites pas !
http://www.example-code.com/csharp/xml.asp
http://www.example-code.com/csharp/xml.asp
http://www.example-code.com/csharp/xml.asp
Bonjour,
Gilles TOURREAU a écrit:Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans ma
classe ?
Bonjour,
Gilles TOURREAU a écrit:
Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.
Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans ma
classe ?
Bonjour,
Gilles TOURREAU a écrit:Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans ma
classe ?
Le Sun, 02 Dec 2007 15:50:52 +0100, Valentin a
écrit:Bonjour,
Gilles TOURREAU a écrit:Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans
ma classe ?
C'est usine à gaz à utiliser le XmlTextReader... En fait le Read() de
XmlTextReader lit "atome par atome XML".
Dans ton cas le premier Read() lit "<?xml version="1.0" standalone="yes"
?>" ensuite il lit "<Top10>" ensuite "<Place1"...etc
De plus ton fichier XML n'est pas "trop correct" du fait que t'utilise :
Place1, Place2,...etc
Préfère dans ce cas "<Place numero="1" Nom=....>
Essayes plustot ce code ci (dans un premier temps) :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamWriter sw = new StreamWriter("CollecteurData.xml"))
{
serializer.Serialize(sw, monObjetTop10);
}
Le contraire étant :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamReader sr = new StreamReader("CollecteurData.xml"))
{
monObjetTop10 = (Top10)serializer.Deserialize(sr);
}
Regardes le "look" du XML généré et dis nous, si cela te plait bien ?
Cordialement
Le Sun, 02 Dec 2007 15:50:52 +0100, Valentin <vavavlp@laposte.net> a
écrit:
Bonjour,
Gilles TOURREAU a écrit:
Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.
Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans
ma classe ?
C'est usine à gaz à utiliser le XmlTextReader... En fait le Read() de
XmlTextReader lit "atome par atome XML".
Dans ton cas le premier Read() lit "<?xml version="1.0" standalone="yes"
?>" ensuite il lit "<Top10>" ensuite "<Place1"...etc
De plus ton fichier XML n'est pas "trop correct" du fait que t'utilise :
Place1, Place2,...etc
Préfère dans ce cas "<Place numero="1" Nom=....>
Essayes plustot ce code ci (dans un premier temps) :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamWriter sw = new StreamWriter("CollecteurData.xml"))
{
serializer.Serialize(sw, monObjetTop10);
}
Le contraire étant :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamReader sr = new StreamReader("CollecteurData.xml"))
{
monObjetTop10 = (Top10)serializer.Deserialize(sr);
}
Regardes le "look" du XML généré et dis nous, si cela te plait bien ?
Cordialement
Le Sun, 02 Dec 2007 15:50:52 +0100, Valentin a
écrit:Bonjour,
Gilles TOURREAU a écrit:Maintenant si tu veux vraiement garder ta classe Top10, tu peux te
passer de l'utilisation d'un DataSet et utiliser les classes de
l'espace de nom : System.Xml.Serialization
Cela permet d'écrire le contenu de ta classe directement dans une
fichier Xml...
Il faut pour cela utiliser la classe XmlSerializer.
Oui je vais garder ma classe.Si tu as des questions n'hésites pas !
En voila une: j'ai réussi à écrire mon fichier xml.
Code:
XmlTextWriter tw = new XmlTextWriter("CollecteurData.xml",
null);
tw.WriteStartDocument(true);
tw.WriteStartElement("Top10");
for (int i = 0; i < 10; i++)
{
tw.WriteStartElement("Place"+(i+1).ToString());
tw.WriteAttributeString("Nom", _top[i].Nom);
tw.WriteAttributeString("Score",
_top[i].Score.ToString());
tw.WriteAttributeString("Niveau",
_top[i].Niveau.ToString());
tw.WriteEndElement();
}
tw.WriteEndElement();
tw.WriteEndDocument();
tw.Flush();
tw.Close();
Résultat:
<?xml version="1.0" standalone="yes" ?>
- <Top10>
<Place1 Nom="Valentin" Score="1450528" Niveau="30" />
<Place2 Nom="Mathilde" Score="788641" Niveau="24" />
<Place3 Nom="Valentin" Score="118375" Niveau="11" />
<Place4 Nom="Valentin" Score="39020" Niveau="14" />
<Place5 Nom="Valentin" Score="0" Niveau="0" />
<Place6 Nom="Personne" Score="0" Niveau="0" />
<Place7 Nom="Personne" Score="0" Niveau="0" />
<Place8 Nom="Personne" Score="0" Niveau="0" />
<Place9 Nom="Personne" Score="0" Niveau="0" />
<Place10 Nom="Personne" Score="0" Niveau="0" />
</Top10>
Mais je n'arrive pas à le lire.J'ai essayer un truc du même genre mais
bon ...
Code:
XmlTextReader tr = new XmlTextReader("CollecteurData.xml");
string line = tr.Read().ToString();
string test = "";
while (line != "False")
{
test += line;
test += "n";
line = tr.Read().ToString();
}
MessageBox.Show(test);
Résultat (MessageBox):
True
True
True
True
True
True
True
True
True
True
True
True
True
Comment puis-je faire pour récuperer les données et les remmetre dans
ma classe ?
C'est usine à gaz à utiliser le XmlTextReader... En fait le Read() de
XmlTextReader lit "atome par atome XML".
Dans ton cas le premier Read() lit "<?xml version="1.0" standalone="yes"
?>" ensuite il lit "<Top10>" ensuite "<Place1"...etc
De plus ton fichier XML n'est pas "trop correct" du fait que t'utilise :
Place1, Place2,...etc
Préfère dans ce cas "<Place numero="1" Nom=....>
Essayes plustot ce code ci (dans un premier temps) :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamWriter sw = new StreamWriter("CollecteurData.xml"))
{
serializer.Serialize(sw, monObjetTop10);
}
Le contraire étant :
XmlSerializer serializer = new XmlSerializer(typeof(Top10));
using (StreamReader sr = new StreamReader("CollecteurData.xml"))
{
monObjetTop10 = (Top10)serializer.Deserialize(sr);
}
Regardes le "look" du XML généré et dis nous, si cela te plait bien ?
Cordialement