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

C# Discussion :

De fichier XML à données dans datagridview


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 16
    Points
    16
    Par défaut De fichier XML à données dans datagridview
    Bonjour.

    Je dois, comme l'indique le titre, remplir un datagridview à partir de ce type de fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <root version="1">
    <slot id="1" nom="Martin" prenom="Jean" datenaiss="25/01/1968" sexe="m" metier="comptable"/>
    <slot id="2" nom="Durant" prenom="Paul" datenaiss="08/09/1948" sexe="m" metier="informaticien"/>
    <slot id="3" nom="Segara" prenom="Isabelle" datenaiss="15/12/1985" sexe="F" metier="secretaire"/>
    ... etc
    </root>
    Il faut savoir que ce fichier est dans un premier temps issus d'internet (via une adresse qui pointe directement sur ce fichier).

    Première question:
    Faut-il en faire une copie locale de ce fichier, avec téléchargement en arrière plan ? En sachant que le fichier change tous les deux jours environ.

    Ensuite, j'ai lu plusieurs choses sur internet :
    - utilisation d'un dataset
    - utilisation de Xpath, xmlReader ...

    Quelle est la meilleure solution ?

    Enfin, j'aimerai filtrer les informations via des cases à cocher (par exemple, afficher dans le datagridview juste les femmes (avec la valeur de l'attribut "sexe" à "F" etc ...).

    Je vous remercie d'avance et j'espère avoir été le plus clair possible.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    bonjour

    sinon pour remplir un dg tu peux essaye ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     XmlDataDocument xmlDatadoc = new XmlDataDocument();
     
                xmlDatadoc.DataSet.ReadXml("C:\\tonChemin.xml");
     
                DataSet ds = new DataSet("PersonDataSet");
     
                ds = xmlDatadoc.DataSet;
     
                dataGridView1.DataSource = ds.DefaultViewManager;
     
                dataGridView1.DataMember = "slot";
    Si ton fichier XML change chaque 2 jour pourquoi doit-on rafraichir les données chaque 5 min? Je veux dire que tu peux e télécharger dans ton PC et puis tu l'utilise en local, c’est plus rapide je crois.

    et pour le filtre essaye avec le BindingSource.filter

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par sdoula Voir le message
    bonjour
    pour le XPATH ca exsite dans le WPF, dans le winforms je ne sais pas
    sinon pour remplir un dg tu peux essaye ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     XmlDataDocument xmlDatadoc = new XmlDataDocument();
     
                xmlDatadoc.DataSet.ReadXml("C:\\tonChemin.xml");
     
                DataSet ds = new DataSet("PersonDataSet");
     
                ds = xmlDatadoc.DataSet;
     
                dataGridView1.DataSource = ds.DefaultViewManager;
     
                dataGridView1.DataMember = "slot";
    Si ton fichier XML change chaque 2 jour pourquoi doit-on rafraichir les données chaque 5 min? Je veux dire que tu peux e télécharger dans ton PC et puis tu l'utilise en local, c’est plus rapide je crois.

    et pour le filtre essaye avec le BindingSource.filter
    Tout d'abord, merci pour ce bout de code, il fonctionne très bien. Cependant, je voudrai avoir que certains informations, et dans l'ordre que je veux, et savant que j'ai déjà configuré ma datagridview (le sexe en premier, la date de naissance en second, le nom en 3ème position par exemple).
    Ensuite, pour le fichier XML, le mieux serait qu'il soit en local, mais je ne vois pas pourquoi tu me parles de rafraichir les données toutes les 5 minutes ...

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    La tu me complique un peut les choses lol
    Je n'ai pas vraiment une grande idée, mais je crois que c'est faisable avec le XMLSerializer
    C’est à dire pour chaque élément de ton XML tu lui associe une variable et tu joue après avec tex variables.
    Ou il ya le XML node Voici un bon lien pour ca

    J’espère que j'ai pu t'aider

  5. #5
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    T'as trouvé une solution?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Pas vraiment ... j'ai du mal.

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Tu peux déserializer ton xml et remplir des objets métiers que tu peux requeter en Linq-To-Objects.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    voila ca va t'aider j'espère

    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
     string myXMLfile = @"C:\Users\Rad\Desktop\xmlFIl.xml";
                DataSet ds = new DataSet();
                // Create new FileStream with which to read the schema.
                System.IO.FileStream fsReadXml = new System.IO.FileStream
                    (myXMLfile, System.IO.FileMode.Open);
                try
                {
                    ds.ReadXml(fsReadXml);
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "slot";
                    dataGridView1.Columns[0].Visible = false;
                }
                catch (Exception ex)
                {
                    fsReadXml.Close();
                }
    c'est un peut bete mais ce n'est pas grave
    je lis depuis un fichier XML puis je construit un dataSet et je met les valeurs de mon fichier XML dans le dataSet
    et depuis le dataSet je control l'ordre et les champs que je veux l'affichier
    c'est bien ca ce que tu cherche?

  9. #9
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    voila autre solution en utilisant LINQ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     XDocument xmlDoc = XDocument.Load(@"C:\Users\Rad\Desktop\xmlFIl.xml");
                var linqList = from c in xmlDoc.Descendants("slot")
                        select new Person
                        {
                            nom = (string)c.Attribute("nom"),
                            prenom = (string)c.Attribute("prenom"),
                            Sexe = (string)c.Attribute("sexe")
     
     
                        };
                List<Person> myListOfPerson = new List<Person>();
                myListOfPerson = linqList.ToList();
                dataGridView1.DataSource = myListOfPerson;
    pour le class Person
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      public class Person
        {
           public string nom { get; set; }
           public string prenom { get; set; }
           public string Sexe { get; set; }
        }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Merci pour cette aide

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

Discussions similaires

  1. Stoquer dans un fichier XML ou dans une base de données ?
    Par ludovic tambour dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 15/11/2007, 11h02
  2. Utilisation d'un fichier de données dan un lot DTS
    Par ninsekh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2007, 16h40
  3. [XSLT] Importer un fichier xml (i18n) dans un fichier xsl
    Par cassy dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/04/2007, 11h38
  4. Réponses: 2
    Dernier message: 22/09/2006, 08h33
  5. Petits fichiers XML regroupés dans un seul
    Par Nanji dans le forum Modules
    Réponses: 1
    Dernier message: 22/06/2006, 09h50

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