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 :

[1.1]Retrouver un node dans un XmlDocument d'apres la valeur d'un attribut


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut [1.1]Retrouver un node dans un XmlDocument d'apres la valeur d'un attribut
    Bonjour,

    je voudrai retrouver un node dans un XmlDocument, d'apres la valeur d'un attribut.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <NODE>
    <NODEID>1</NODEID>
    <CHILDNODE>
    <CHILDNODEID>23456</CHILDNODEID>
    </CHILDNODE>
    <CHILDNODE>
    <CHILDNODEID>23457</CHILDNODEID>
    </CHILDNODE>
    </NODE2>
    Par exemple,je voudrai retrouver le CHILDNODE dont le CHILDNODEID est égal à 23457, de manière à pouvoir rajouter/modifier des atributs.
    Y a-t-il une méthode pour ceci, s'il-vous-plait ?

  2. #2
    Membre expérimenté
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Salut,

    Avant toutes choses, tu dois savoir que tu n'a pas d'attributs dans ton exemple xml (qui d'ailleurs n'est pas valide puisque tu fermes un NODE2 qui n'a pas été ouvert). De plus j'ai l'impression que tu n'a pas de noeud principale. Je te conseillerais donc d'aller jeter ton oeil sur les cours xml / xpath.

    Donc un document xml valide avec des attributs ID correspondrait plutôt à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <ROOTNODE>
       <NODE ID="1">
          <CHILDNODE ID="23456"></CHILDNODE>
          <CHILDNODE ID="23457"></CHILDNODE>
       </NODE>
       <NODE ID="2">
           ....
       </NODE>
       ....
    </ROOTNODE>
    En partant sur l'exemple que je viens te montrer tu dois récupérer le noeud que tu veux en fonction de l'id ce qui n'est pas très compliqué.

    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
    XmlDocument doc;
    // ici le chargement de ton fichier xml que tu sais s'en doute faire
    ...
     
    // rechercher un noeud
    XmlNode node = doc.SelectSingleNode("//CHILDNODE[@ID = '23456']");
     
    // Pour ajouter un attribut:
    node.SetAttribute("TonAttribut", "SaValeur");
     
    // Pour ajouter un noeud:
    XmlElement elem = doc.CreateElement("TonNoeud");
    elem.Value = "SaValeur";
     
    node.AppendChild(elem);
    Et voila, mais comme dis plus haut je te conseil de lire les cours xml/xpath.

  3. #3
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    Merci !

    Par contre, on ne peut pas faire un SetAttribute sur le XmlNode...



    Pour le fichier, le format est spécifié de manière stricte dans le cahier des charges, donc je n'aurai à priori pas de problèmes pour ça.

  4. #4
    Membre expérimenté
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Change le XmlNode par XmlElement, ça devrait passer je pense.

  5. #5
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    il faut penser au Appendchild, en fait ! Voilà ce que j'oubliais ;o)

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/10/2006, 11h50
  2. Retrouver une donnée dans une zone de liste
    Par uloaccess dans le forum Access
    Réponses: 9
    Dernier message: 07/11/2005, 13h25
  3. Suppresion d'une node dans un Treeview
    Par PRACH dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/11/2005, 12h22
  4. Réponses: 1
    Dernier message: 09/08/2005, 12h09
  5. [DOM] Les nodes dans le modèle DOM
    Par Bele'nos dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/03/2005, 22h43

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