[Debutant] Lecture fichier XML

Signaler
Messages postés
55
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
24 novembre 2009
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Bonsoir tout le monde.

Bon, c'est parti pour les questions de noobs ><
Voila, j'ai un fichier XML qui référencent des ordinateurs ainsi que des infos qui leur son liés.

Enfon bon, j'aimerai pouvoir le lire et afficher le resultat dans une listbox (listBox_Computers).

Voila mon fichier XML :



 






<?
xml version= "1.0" encoding="utf-8"
?>











-




<


XML


>











-




<


Ordinateur
Nom


="

RM3MWMARCHETJ

"
>









 






<


Type


>


Standart


</


Type


>










 






<


Propriétaire


>


Marchetto Jimmy (MARCHETJ)


</


Propriétaire


>










 






</


Ordinateur


>










-




<


Ordinateur
Nom


="

RM3MWSROCZYNC

"
>









 






<


Type


>


MOBILE


</


Type


>










 






<


Propriétaire


>


Sroczynski Charles (SROCZYNC)


</


Propriétaire


>









</





Ordinateur





>









</





XML





>













J'utilise le code suivant (que j'ai récupéré sur ce site ^^) pour lire et integrer les données dans ma listbox :












private




void
toolStripButton2_Click(
object
sender,

EventArgs
e)
{


listBox_Computers.Items.Clear();

DataSet
dataSetFichier =
new



DataSet
();
dataSetFichier.ReadXml(

"adeliz.xml"
);

foreach
(

DataRow
row
in
dataSetFichier.Tables[0].Rows)
{
listBox_Computers.Items.Add(row[
"Ordinateur"
]);
}
}

Tout ceci me convient mais j'aimerai aussi pouvoir (en utilisant ma listBox_Computers) afficherles infos dans un Label.

Vous pouvez m'aider ?

Merci.

3 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Met tes données dans une table de hashage dont la clé est le nom de l'ordintaeur, en valeur tu mes un objet (classe) computer qui contient les propriété (Nom, Type, Proprio).

Tu mets les clés de ta table de hashage dans ta listbox et à la selection de l'élement, tu va chercher ton objet dans table de hash.

L'autre méthode c'est de passer par le databinding.




::|The S@ib|::
MVP C#.NET
Messages postés
55
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
24 novembre 2009

Merci pour ta réponse.

Le soucis c'est que je suis un gros debutant et je ne comprends pas tout ce dont tu parles
tu peux me donner un exemple (code) et m'expliquer ?

J'espere que cela ne te derange pas trop.

Merci.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
public class Computer
{
private readonly string _computerName;
private readonly string _computerOwner;
private readonly string _type;


public Computer(string name, string owner, string type)


{


_computerName = name;


_computerOwner = owner;


_type = type;


}


public sting ComputerName


{


get


{
return _computerName


}


}
//Idem pour les deux autres variables d'instance (type et owner)
}

Ca c'était ton objet métier.

Dans ta classe de travail

private const string XPATH_COMPUTER_QUERY = "//Ordinateur"
private Hashtable<string, Computer> table;

//Dans le constructeur charger une novuelle instance de "table";

Public bool LoadXml(string xmlFilePath)
{
if (!File.Exists(xmlFilePath))
return false;

XmlDocument doc = new XmlDocument();
try
{
doc.Load(xmlFilePath);
}
catch (XmlException e)
{
//
return false;
}

foreach (XmlNode node in doc.SelectNodes(XPATH_COMPUTER_QUERY))
{
Computer c = new Computer (node.Attributes["Nom"].ToString(), node["Type"].InnerText, node["Propritaire"].InnerText);


if(!table.ContainsKey(c.ComputerName.TolowerInvariant))
table.Add(c.ComputerName.TolowerInvariant(), computer);
}

}

Et pour les récuperer a la selection :

label.text = table(listbox.SelectedText).ComputerOwner.

Voila en gros comment ca marche..

C'est fait sans tester.

::|The S@ib|::
MVP C#.NET