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#/XML] Comment sélectionner un noeud par un attribut ? [Débutant(e)]


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut [C#/XML] Comment sélectionner un noeud par un attribut ?
    Bonjour, en C#, je voudrais savoir comment peut-on selectionner un noeud XML par son attribut, et ce, meme si ces champs sont multiples.

    Exemple : je veux recuperer le XMLNode FIELD avec l'attribut AL parmi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <FIELD lg="ES">
    <FIELD lg="UK">
    <FIELD lg="AL">
    <FIELD lg="FR">
    Merci de me proposer une solution, si il en existe une car pour le moment, je les scrute tous et c'est lent ! Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Il existe plusieurs langages de requetage sur du XML, XPath en est un. Tu trouveras un tutorial ici : http://www.w3schools.com/xpath/. C'est ce langage qui est utilisé qd tu fais un appel à SelecSingleNode d'un objet XmlDocument.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    C'est génial ce truc, merci beaucoup !!! on peut l'utiliser tel quel avec C# a priori donc c'est parfait !!!
    merci encore

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour Pi05
    Tout d'abord rassures-toi il y a necessairement une solution puisque le XmlNode expose une propriété .Attributes

    Maintenant ne connaissant pas le shéma de ton xml, si tu as des noeuds imbriqués, il tefaudra concevoir alors une petite méthode recursive.

    Le but étant il me semble d'identifier comme valide un noeud déjà récupéré , donc répondant à quelque chose de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private bool IsValid(XmlNode n, string attribut, string value)
    {
       XmlAttribute att = (XmlAttribute) n.Attributes.GetNamedItem(attribut);
       if( att != null)
        { return (att.Value == value);}
       else
         { return false;}
    }
    Edit:
    Désolé je vois que Sphax t'a déjà proposé Xpath aussi donc les soluces ne manquaient pas

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    Finalement, j'ai un soucis quand meme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noeudLangue = root.SelectSingleNode("language[@code='pLangue']");
    le soucis est que pLangue est de type String !!!
    Et au debug, je m'apercois que cette ligne foire, je pense que j'obtiens:

    [@code='"FR"'] au lieu de [@code='FR'] !!!

    Any solutions please ???

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    J!e comprends rien à ton probleme. pLangue est une variable de ton programme ?? Dans ce cas ce qu'il faut faire c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    noeudLangue = root.SelectSingleNode("language[@code='" + pLangue + "']");
    Sinon merci de t'expliquer plus clairement .

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    En effet, c'etait tout bete ! Sphax vient de donner la solution ...

    MERCI A TOUS POUR VOTRE AIDE

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

Discussions similaires

  1. [XML] Comment détecter un noeud vide ?
    Par lnplnp dans le forum Modules
    Réponses: 1
    Dernier message: 31/03/2008, 17h47
  2. [XML] Comment supprimer un noeud
    Par lnplnp dans le forum Modules
    Réponses: 1
    Dernier message: 31/03/2008, 17h46
  3. [DOM] PHP5 et XML comment ajouter un noeud dans un noeud précis?
    Par titou250 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 20/04/2006, 21h02

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