IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Alimenter combobox avec un noeud de fichier XML


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut Alimenter combobox avec un noeud de fichier XML
    Bonjour,
    après plusieurs recherches sur le forum, faq et google je ne parvient toujours pas a faire ce que je souhaite (et qui me parait assez simple..)

    j'ai un fichier XML de ce format :
    <Villes xmlns="VilleNamespace">
    <maps_ville>
    <id_ville>1</id_ville>
    <id_departement>1</id_departement>
    <nom>Amareins</nom>
    <CP>01090</CP>
    <lat>46.0803111</lat>
    <lon>4.7835137</lon>
    </maps_ville>

    <maps_ville>
    <id_ville>2</id_ville>
    <id_departement>1</id_departement>
    <nom>Ambérieu-en-Bugey</nom>
    <CP>01500</CP>
    <lat>45.9577810</lat>
    <lon>5.3588286</lon>
    </maps_ville>

    </Villes>
    Je souhaiterai alimenter ma combobox avec la valeur de l'élément :
    <nom>Amareins</nom>
    et pre remplir mon textbox avec le champ
    <CP>01500</CP>
    Merci de votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    j'ai trouvé ca ;
    qui dit mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    XmlDocument doc = new XmlDocument();
                doc.Load(@"Ville.xml");
     
     
                XmlNodeList noms= doc.GetElementsByTagName("nom");
     
               foreach (XmlNode nomin noms)
                {
                    this.comboBox1.Items.Add(nom.ChildNodes[0].Value);
                }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    ou bien avec du LinQ comme ceci:
    le format du fichier est comme ceci:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <!--Liste des villes-->
    <Villes>
    <Ville nom="Aast" CP="64460" />
    <Ville nom="Abainville" CP="55130" />
    <Ville nom="Abancourt" CP="59265" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    XDocument xml= XDocument.Load("Villes.xml");
    var query = from c in xml.Descendants("Ville")
                            //where ((string)c.Attribute("nom")).Contains("Abainville")
                            orderby (string)c.Attribute("nom") ascending
                            select (string)c.Attribute("nom");
     
                foreach (string s in query)
                {
                    this.cbVille.Items.Add(s); 
                }
    mais ca rame un peu je trouve ... (il ya 34 484 enreg.)
    Ca prends exactement 1.372 sec.
    Est ce long?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    personne pour une remarque, un commentaire?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Pour ma part je fais comme çà...

    Class TraitementsFichierXml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public static DataTable recupListeSecteurs()
            {
                chargementFichierUtilitairesXml();
                string xpathQuery = string.Format("//utilitaires//secteurs//sec");
                XmlNodeList noeudsSecteurs = FichierUtilitairesXml.SelectNodes(xpathQuery);
                DataTable dtsecteurs = new DataTable();
                DataColumn col0 = new DataColumn("Secteurs");
                dtsecteurs.Columns.Add(col0);
                foreach (XmlNode noeudsSecteur in noeudsSecteurs)
                {
                    //Extracttion des données
                    string secteur = noeudsSecteur.InnerText;
                    //Remplie la DataTable
                    DataRow ligneTable = dtsecteurs.NewRow();
                    ligneTable[0] = secteur;
                    dtsecteurs.Rows.Add(ligneTable);
                }
                return dtsecteurs;
            }
    Et apres je rempli ma combobox comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public Nouveau()
            {
                InitializeComponent();
                chargerComboBox();
            }
     
    public void chargerComboBox()
            {
                DataTable comboBoxSecteursDataTable = TraitementsFichierXml.recupListeSecteurs();
                for (int secteur = 0; secteur < comboBoxSecteursDataTable.Rows.Count; secteur++)
                {
                    comboBoxSecteurs.Items.Add(comboBoxSecteursDataTable.Rows[secteur][0].ToString());
                }
            }

    Voilà je sais pas si c'est la meilleur méthode mais s'en ai une.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jquery Cache avec IE et un fichier XML
    Par polemoss dans le forum jQuery
    Réponses: 3
    Dernier message: 23/04/2009, 12h55
  2. Ajouter un noeud à un fichier xml existant
    Par babou54 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/04/2009, 16h54
  3. Réponses: 7
    Dernier message: 15/07/2008, 11h00
  4. [DOM] Ajouter des noeuds à un fichier XML
    Par Louis-Guillaume Morand dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 07/04/2007, 14h55
  5. champ d'une table avec comme type un fichier xml
    Par gnagnus dans le forum Oracle
    Réponses: 2
    Dernier message: 05/03/2007, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo