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

Langage Delphi Discussion :

Comment lister les attributs d'un noeud XML sans connaître leur nom ?


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2004
    Messages : 49
    Points : 36
    Points
    36
    Par défaut Comment lister les attributs d'un noeud XML sans connaître leur nom ?
    Salut,
    Je cherche un moyen pour lister les attributs d'un noeud d'un fichier xml sans connaitre leur nom.
    C'est pour faire un fonction recurcive qui va remplacer des caracteres dans les valeurs de chaqun des noeuds du fichier.
    La partie qui parcours tous les noeuds fonctionne bien mais quand je suis sur un noeud, je n'arrive pas a lister les attributs sans connaitre leur nom!
    Merci d'avance.

  2. #2
    Rédacteur

    Inscrit en
    mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 38
    Points : 442
    Points
    442
    Par défaut
    Salut,

    Dans "MSXML.pas" tu devrais trouver ton bonheur,

    IXMLDomNode.attributes du type "IXMLDOMNamedNodeMap"

    avec :

    - IXMLDOMNamedNodeMap.length
    - IXMLDOMNamedNodeMap.item[index: Integer]

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2004
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Pour lister les attributs :

    IXMLNode > property AttributeNodes: IXMLNodeList ;

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2004
    Messages : 49
    Points : 36
    Points
    36
    Par défaut
    Ca y est, enfin j'y suis arrivé.
    En fait la liste des attributs d'un noeud est considéré comme une liste de noeuds!
    Voila ma fonction qui remplace une chaine par une autre dans tous les attributs d'un fichier :
    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
    // parcours tous les attributs du noeud et ses noeuds enfants et remplace les sOldPattern par des sNewPattern
    procedure TForm1.ReplaceInAttrubuteValue(xmlnNode : IXMLNode;
                                             sOldPattern, sNewPattern : String);
    var
      i : integer;
      xmlnCurrentNode : IXMLNode;
    begin
      // parcours les attributs du noeud
      for i := 0 to xmlnNode.AttributeNodes.Count - 1 do
      begin
        // recupere l'attribut courant comme un noeud
        xmlnCurrentNode := xmlnNode.AttributeNodes.Get(i);
     
        // si l'attribut courant n'est pas null
        if xmlnCurrentNode.NodeValue <> null then
        begin
          // remplace les valeurs pour l'attribut courant
          xmlnCurrentNode.NodeValue &#58;= StringReplace&#40;xmlnCurrentNode.NodeValue,
                                                     sOldPattern,
                                                     sNewPattern,
                                                     &#91;rfReplaceAll&#93;&#41;;
        end;
      end;
     
      // parcours les noeuds enfants du noeud
      for i &#58;= 0 to xmlnNode.ChildNodes.Count - 1 do
      begin
        // appelle cette fonction récursivement pour chaque noeud enfant
        ReplaceInAttrubuteValue&#40;xmlnNode.ChildNodes&#91;i&#93;, sOldPattern, sNewPattern&#41;;
      end;
    end;
    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2014, 11h03
  2. Réponses: 2
    Dernier message: 23/12/2009, 13h05
  3. Comment lire les "Attributes" en XML ?
    Par [ZiP] dans le forum Delphi
    Réponses: 6
    Dernier message: 13/03/2007, 15h33
  4. lister les attributs d'un noeud XML
    Par wapok dans le forum Delphi
    Réponses: 3
    Dernier message: 30/12/2006, 03h16
  5. Retrouver les attributs d'un noeud...
    Par LLaurent dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/12/2003, 10h20

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