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 :

Accéder noeud XML spécifique [Débutant]


Sujet :

C#

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut Accéder noeud XML spécifique
    Bonjour,

    Voilà je suis débutant en C# et je cherche comment je pourrais récupérer le contenu d'un noeud d'un fichier XML.

    Voilà un exemple de mon fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Root>
         <Element>
               <Corps_outbound>
                     .....
               </Corps_outbound>
               <Corps_outbound>
                     .....
               </Corps_outbound>
         </Element>
    </Root>
    L'élément Corps_outbound revient n fois dans mon fichier.

    Voilà dans une boucle j'aimerais simplement récupérer d'aborder le premier Corps_outbound, puis le 2eme, etc séparement.

    J'ai tenté en Linq mais je ne sais pas comment récupérer un seul. Il n'y a pas d'ID incrémenter pour effectuer un tri sur un attribut de la requête ou autre.

    Voici mon bout de code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    string path = @"C:\Users\admin\Desktop\test.xml";
                var doc = XDocument.Load(path);
     
                var groupedRecords =
                    from corps in doc.Root.Elements("Corps_outbound")
                    select corps;
     
                doc = new XDocument(
                        new XElement("Outbound",
                            groupedRecords));
     
                doc.Save(@"C:\Users\admin\Desktop\autre.xml");
    Je suis sûre qu'il y a une méthode toute simple, mais j'ai du mal :/ J'ai tenté bêtement de rajouter [0] à la fin pour récupérer l'élément 1 mais sans succès.

    Merci

    edit : Je précise que j'aimerais garder la structure XML intacte en sortie.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Si tu fais

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
                var groupedRecords =
                    (from corps in doc.Root.Elements("Corps_outbound")
                    select corps).ToList();
    Tu auras une liste, et tu peux faire groupedRecords[0]
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Sinon tu as la solution XPath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    XmlDocument doc = new XmlDocument();
    doc.load(path);
     
    XPathNavigator nav = document.CreateNavigator();
    String query = "//Element/Corps_outbound";
    XPathNodeIterator resultNodes = XPathNavigator.Select(XPathNavigator.Compile(query ));
     
    while (resultNodes .MoveNext())
    {
       //Ici ton traitement sur un noeud récupéré dans resultNodes.Current; 
    }

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Merci je vais tester ca cette aprem !
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Désolé pour le retard, ça marche niquel !

    Encore merci !
    Règle N° 1 : Si tout va bien, ne touchez à rien.

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

Discussions similaires

  1. Accéder à un noeud XML spécifique
    Par zooffy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 25/10/2010, 13h26
  2. [Ajout noeud xml] comment ça marche?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 37
    Dernier message: 19/07/2007, 22h46
  3. Accéder noeud XML
    Par GogNav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2007, 16h05
  4. Accéder à un noeud XML
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/06/2007, 12h56
  5. XSL ne parvient pas à lire les noeuds XML ??
    Par yahn dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/06/2004, 19h29

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