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 :

lire un fichier XML en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 163
    Par défaut lire un fichier XML en C#
    Bonsoir ,je débute en C# et je souhaiterais lire un fichier XML , j'ai procedé ainsi :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;
    using System.IO;
     
    public struct strprofil
    {
        public string nom,prenom;
    };
     
    namespace ConsoleApplication2
    {
     
        public class Program
        {
            static void Main(string[] args)
            {
                int i=0;
                strprofil[] profil = new profil[2];
                XmlTextReader filexml = XmlTextReader("profil.xml");
                filexml.WhitespaceHandling = WhitespaceHandling.None;
     
                while (filexml.LocalName == "YZ")
                {
                    profil[i].nom = filexml.ReadString();
                    filexml.Read();
                    profil[i].prenom = filexml.ReadString();
                    filexml.Read();
                    i += 1;   
                }
                Console.WriteLine(" {0}", profil[0].nom);
                Console.ReadLine();
            }
        }
    }
    Le fichier profil.xml est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0"?>
    <profil>
    	<profil>
    		<nom>YZ</nom>
    		<prenom>Z</prenom>
    	</profil>
    	<profil>
    		<nom>X</nom>
    		<prenom>XY</prenom>
    	</profil>
    </profil>
    Le résultat est que j'obtiens rien en sortie ( je pensais obtenir YZ )
    Où est le problème ?
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 163
    Par défaut
    Ah oui j'aimerais savoir aussi comment modifier un fichier XML donné ?
    ( je sais écrire par contre j'arrive pas à ne pas écraser le XML d'origine lors d'une modif )
    merci !!

  3. #3
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Salut,
    ce que tu veux faire me semblerais beaucoup plus rapide et plus simple via un DataSet.
    En effet ces derniers ont deux propriétés fortes interessantes : .ReadXML() et .WriteXML(), leurs noms parlent d'eux mêmes !
    Donc toutes tes données se chargent dans une (ou des selon le fichier) DataTable(s) au sein du DataSet instancié et chargé de la sorte.
    Après tu es libre de manipuler (facilement du coup) tes données et de réenregistrer le tout après.
    Après ça dépend exactement ce que tu veux faire mais cette méthode me semble la plus appropriée.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 163
    Par défaut
    Merci pour la réponse
    OK je vais me pencher sur les DataSet
    Sinon sur mon code ou serait le problème ?
    PS : J'ai la version Visual Studio C# 2005 Express , et je n'ai pas le type de donée : DataGrid est ce normal ?
    Sinon question bête qu'est qu'un DataSet ? a t'il une relation avec les Windows Form ( en d'autres termes peut on utiliser la méthode des DataSet lors d'une applciation console ...)

    Merci

  5. #5
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    un DataSet est en gros un contenaire de donnée, donc tu peux parfaitement l'utiliser dans un mode console, c'est juste un objet.

    Pour le dataGrid, regarde l'objet DataGridView, je crois que le DataGrid est +/- deprecated dans le FrameWork 2.0 ( à confirmer )

  6. #6
    Membre éprouvé Avatar de raOOn
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    Moi je préfère passer par un XMLdocument c'est bien plus maléable

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 163
    Par défaut
    Citation Envoyé par Jabbal'H
    un DataSet est en gros un contenaire de donnée, donc tu peux parfaitement l'utiliser dans un mode console, c'est juste un objet.

    Pour le dataGrid, regarde l'objet DataGridView, je crois que le DataGrid est +/- deprecated dans le FrameWork 2.0 ( à confirmer )
    Très bien .
    Oui je me doutais que c'était DataGridView je vais voir tout ça .
    J'ai essayé un autre bout de code trouvé sur la FAQ mais j'ai un problème :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;
    using System.Xml.XPath;
    using System.Data;
     
    public struct profil
    {
        public string nom, prenom;
    };
     
    namespace IF
    {
        class Program
        {
            static void Main(string[] args)
            {
                int cmp=0;
                profil[] _profil = new profil[4];
                string nom;
                string prenom;
                /*for (int j = 0; j < 4; j++)
                {
                    _profil[j].nom = "\0";
                    _profil[j].prenom = "\0";
                }*/
                XPathDocument doc = new XPathDocument("profil.xml");
                XPathNavigator nav = doc.CreateNavigator();
     
                XPathNodeIterator iter = nav.Select("profils/profil");
     
                while (iter.MoveNext())
                {
                    _profil[cmp].nom = iter.Current.SelectSingleNode("Nom").Value;
                    _profil[cmp].prenom = iter.Current.SelectSingleNode("Prenom").Value;
                    try
                    {
                        nom = iter.Current.SelectSingleNode("Nom").Value;
                        prenom = iter.Current.SelectSingleNode("Prenom").Value;
                    }
     
                    catch (NullReferenceException e)
                    {
                        Console.WriteLine("{0} Caught Exception #1 ", e);
                    }
                    catch
                    {
                        Console.WriteLine("Caught Exception 2.");
                    }
                    finally
                    {
                        Console.WriteLine("Excecuting finally block.");
                    }
                    cmp += 1;
                    Console.WriteLine(" Nom : {0}  Prenom : {1}", nom, prenom);
                }
                Console.Read();
     
            }
        }
    }
    Le debogueur me demande d'utiliser new ..
    Quelqu'un pourrait m'aider à trouver l'erreur ?

    Merci encore

Discussions similaires

  1. Créer et lire un fichier xml
    Par Bruno1905 dans le forum C++Builder
    Réponses: 14
    Dernier message: 13/06/2007, 11h11
  2. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  3. [DOM XML] Lire un fichier xml
    Par axel-erator dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/12/2005, 22h36
  4. lire un fichier xml
    Par stephanie5 dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/11/2005, 16h34
  5. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52

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