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 :

[C#] Lire fichier xml avec plusieurs noeuds.


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut [C#] Lire fichier xml avec plusieurs noeuds.
    Bonjour à tous..

    et oui encore un sujet sur le xml.. mon cas est peut etre tout simple, mais je galére depuis plusieurs jours pour réussir à faire qq chose..

    j'ai essayé plein de code que j'ai trouvé aux hasards de mes recherches sur le net.. mais je n'arrive à rien..

    ce que je veux c'est pouvoir trouver les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <itemcaptions>
    <itemevent>
    <itemicons
    en fonction de
    et ensuite de
    voici le fichier en question.. il peut etre éventuellement modifier dans la structure..

    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
     
    <?xml version="1.0"?>
    <monfichier>
    	<screen value="screen1">
    		<groub_by value="group1">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group2">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group3">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    	</screen>
    	<screen value="screen2">
    		<groub_by value="group10">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group20">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group30">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    	</screen>
    	<screen value="screen3">
    		<groub_by value="group11">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group12">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    		<groub_by value="group13">
    			<itemcaptions>value1</itemcaptions>
    			<itemevent>value 2</itemevent>
    			<itemicons>value 3</itemicons>
    		</groub_by>
    	</screen>
    </monfichier>
    merci d'avance de votre aide.. je désespère :-)

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut
    j'y arrive en faisant ca mais qu'est ce que c'est pas bo..

    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
    public string ReadXml(string screen, string group_by, string ma_recherche, string monxml)
            {
                // string ma_recherche est par exemple itemcaptions, ou itemevent ... 
                if (wModeDebug == true) MyCore.SpyLog("ReadXml()");
     
                XmlDocument xmldoc = new XmlDocument();
                // ouverture du fichier xml
                xmldoc.Load(monxml);
     
                XmlNodeList xmlnode = xmldoc.GetElementsByTagName("screen");
     
                for (int i = 0; i < xmlnode.Count; i++)
                {
                    XmlAttributeCollection xmlattrc = xmlnode[i].Attributes;
     
                    if (xmlattrc[0].Value.ToString() == screen)
                    {
                        if (wModeDebug == true) MyCore.SpyLog(" ## Je suis dans le noeud de ma recherche = " + screen);
     
                        XmlNodeList enfant = xmlnode[i].ChildNodes;
     
                        for (int j = 0; j < enfant.Count; j++)
                        {
                            // MyCore.SpyLog("#### enfant = " + enfant[j].OuterXml.ToString());
     
                            if (enfant[j].OuterXml.Contains(group_by))
                            {
                                XmlNodeList enfant2 = enfant[j].ChildNodes;
     
                                for (int a = 0; a < enfant2.Count; a++)
                                {
                                    //MyCore.SpyLog("#### enfant = " + enfant2[a].OuterXml.ToString());
     
                                    if (enfant2[a].Name.ToString() == ma_recherche)
                                    {
                                        if (wModeDebug == true) MyCore.SpyLog("#### ma_recherche = " + enfant2[a].InnerText.ToString());
                                        ma_recherche = enfant2[a].InnerText.ToString();
                                    }
                                }
                            }
                        }
                    }
                }
               return ma_recherche;
            }

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Utilise une requête XPath, ce sera plus simple.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    XPathNavigator nav = new XPathDocument(...).CreateNavigator();
     
    XPathNodeIterator itor = nav.Select("//screen[@value='screen2']/groub_by[@value='group30']/*");
     
    foreach (XPathNavigator n in itor)
    {
        Console.WriteLine(n.Value);
    }
    Pas de questions techniques par MP

Discussions similaires

  1. Comment créer un fichier XML avec plusieurs boucles
    Par Slyvore dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 24/11/2015, 09h33
  2. [PHP 4] Parser fichier XML sur plusieurs noeuds
    Par Freedolphin dans le forum Langage
    Réponses: 0
    Dernier message: 17/09/2011, 16h13
  3. lire un fichier XML avec des noeuds, enfants, etc
    Par thor76160 dans le forum C#
    Réponses: 23
    Dernier message: 04/09/2009, 15h14
  4. Réponses: 3
    Dernier message: 24/07/2009, 14h04
  5. Réponses: 2
    Dernier message: 27/03/2009, 17h44

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