Parser un ficher XML puis remplir une listbox [Résolu]

ninjy 10 Messages postés vendredi 4 mars 2011Date d'inscription 22 juin 2012 Dernière intervention - 21 juin 2012 à 19:23 - Dernière réponse : Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention
- 23 juin 2012 à 09:39
Bonsoir,

Je souhaite remplir une listbox (ou un combobox je ne sais pas encore) en sélectionnant une donnée précise dans un fichier XML.

Mon XML se présente de cette façon:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Targetlist>
<Targets>
<Target
Name="AAA"
Type="DBG_DEX"
IPAddress="192.168.24.243"
Port="000003E8"/>


J’essaie de récupérer uniquement le Name de chaque target référencées dans le fichier pour les afficher dans la listbox.

Le soucis au niveau du code c'est que je bloque après avoir chargé le fichier.


Quelqu'un à une idée ? :)

Merci beaucoup.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 21 juin 2012 à 19:57
3
Merci
Tu as cette discussion comme exemple de line, ou encore celle-ci.

Une fois que tu as la liste de données, tu l'affectes au datasource de ta listbox et tu mets la bonne propriété au datameber (pour l'affichage)


Whismeril

Merci Whismeril 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Whismeril
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 21 juin 2012 à 19:26
0
Merci
Bonsoir,

peux tu mettre le code avec lequel tu charge ton fichier?


Whismeril
Commenter la réponse de Whismeril
ninjy 10 Messages postés vendredi 4 mars 2011Date d'inscription 22 juin 2012 Dernière intervention - 21 juin 2012 à 19:42
0
Merci
Bonsoir,

JE viens quitter mon bureau. :(

J'étais en train d'utiliser XDocument. Avec un point d'arrêt je peux voir qu'il lit bien le fichier mais après je ne vois pas comment faire.
Ça n'a pas d'importance d'utiliser Linq ou pas.

Après je suis peut être mal partie aussi.. :)

Merci.
Commenter la réponse de ninjy
ninjy 10 Messages postés vendredi 4 mars 2011Date d'inscription 22 juin 2012 Dernière intervention - 22 juin 2012 à 09:42
0
Merci
Merci je vais regarder.
Commenter la réponse de ninjy
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 22 juin 2012 à 10:55
0
Merci
Si tu souhaites, afficher les Noms dans ta liste, puis quand tu cliques sur une entrée voir le type l'ip et le port dans des textbox, tu peux te servir d'un databindingsource


Whismeril
Commenter la réponse de Whismeril
ninjy 10 Messages postés vendredi 4 mars 2011Date d'inscription 22 juin 2012 Dernière intervention - 22 juin 2012 à 11:33
0
Merci
Voila le code je viens de faire à partir du 2ème lien.

        public string TgName { get; set; }
        public string Type { get; set; }

        private List<frmMainMenu> myTargets = new List<frmMainMenu>();


        private void frmMainMenu_Load(object sender, EventArgs e)
        {
            XDocument xDoc = XDocument.Load(string.Format(@"blabla.xml", Application.StartupPath));

            myTargets = (from target in xDoc.Descendants("Target")//directement la balise qui contient les données d'une seule instance de target
                         select new frmMainMenu
                         {
                             TgName = target.Element("Target").Attribute("Name").Value, //on va chercher l'attribut
                             Type = target.Element("Target").Attribute("Type").Value, //on va chercher l'attribut
                         }
                        ).ToList<frmMainMenu>();//on en fait une liste


Et ensuite je fais listTargets.DataSource = myTargets; mais il ne passe pas dedans.

Je n'arrive pas à comprendre où je me suis trompé.
Commenter la réponse de ninjy
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 22 juin 2012 à 11:46
0
Merci
Je pense qu'il vaut mieux que tu écrives une classe dédiée pour

        
    public class toto
    {
        public string TgName { get; set; }
        public string Type { get; set; }
    }


Et donc une list de cette classe toto.
Si tu ne mets pas TgName au datameber, tu verras la valeur de ToString dans la list soit .....toto.


Whismeril
Commenter la réponse de Whismeril
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 22 juin 2012 à 11:49
0
Merci
Ha et là
myTargets = (from target in xDoc.Descendants("Target")//directement la balise qui contient les données d'une seule instance de targ

ça doit être
xDoc.Descendants("Targets")



Whismeril
Commenter la réponse de Whismeril
ninjy 10 Messages postés vendredi 4 mars 2011Date d'inscription 22 juin 2012 Dernière intervention - 22 juin 2012 à 12:46
0
Merci
C'est bon ça fonctionne. :)

        private void frmMainMenu_Load(object sender, EventArgs e)
        {

            XDocument xDoc = XDocument.Load(string.Format("blabla.xml", Application.StartupPath));

            myTargets = (from Target in xDoc.Descendants("Targets").Descendants("Target")//directement la balise qui contient les données d'une seule instance de target
                         select new TargetsPS3
                         {
                             TgName = Target.Attribute("Name").Value, //on va chercher l'attribut
                             //Type = Target.Attribute("Type").Value, //on va chercher l'attribut
                         }

                         

                         ).ToList<TargetsList>();//on en fait une liste

            listTargets.BindingContext = new BindingContext();
            listTargets.DataSource = myTargets;
            listTargets.DisplayMember = "TgName";


Il manquait un Descendants en fait, il ne trouvait pas les targets.

Je note pour les databindingsource.

Merci.
Commenter la réponse de ninjy
Whismeril 12130 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 octobre 2018 Dernière intervention - 23 juin 2012 à 09:39
0
Merci
Bonjour,

de rien, clique sur le bouton réponse accepté pour d'autres utilisateurs ayant un même problème


Whismeril
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.