Lister les attributs d'un noeud XML [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
7 novembre 2008
-
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
Bonjour, depuis quelques jours je suis confronte a un soucis.
je souhaite obtenir la quantite d'attributs que possede un noeud d'un fichier XML et pouvoir l'affichier sur une zone (Edit, memo).
Seulement je ne trouve pas les fonctions adequat.

Jarrive a lire la valeur d'un attribut lorsque je connais son nom, mais lorsque celui ci m'est inconnu je ne peut pas le faire.

J'ai trouver dans quelques langages la fonction "AttributeCount" mais qui n'existe pas en tant que telle dans delphi (j'utilise delphi 7).

De meme une fois mon premier probleme resolu existe t'il une methode du type "NextSibling" pour passer d'un attribut a un autre ?

merci

5 réponses

Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
Bonjour wapok,

Les questions sur l'utilisation du composant TXmlDoxument sont rares mais toujours intéressantes.
Puisque tu sembles avoir franchi les premières barrières, je présume que tu sais manipuler une interface IXmlNode et ses descendants.

Dans le code qui suit et que j'ai déjà eu l'occasion de fournir sur ce forum, StockType : IXmlStockType est un descendant de IXmlNode. Sur chacun des noeuds, nous allons recherher le nombre d'attributs et, pour chacun d'eux, en afficher les nom et la valeur dans un composant TMemo.

procedure TForm1.btnLoadXMLClick(Sender: TObject);
var
  i, j: integer;
  s: string;
  li: TListItem;
  StockListType: IXMLStockListType;
  StockType: IXmlStockType;
const
  Fichier =  'test.xml';
begin
  ListView1.Items.Clear;

  XmlDocument1.LoadFromFile(Fichier);
  XMLDocument1.Active := True;

  try
    StockListType := GetStockList(XmlDocument1);
     for  i : = 0to StockListType.Count - 1 do
    begin
      //lecture d'un noeud xml
      StockType :=  StockListType.Stock[i];
      //remplir le listview avec les branches du noeud
      li := ListView1.Items.Add;
      li.Caption := StockType.Exchange;
      li.SubItems.Add(StockType.Name);
      li.SubItems.Add(StockType.Price);
      li.SubItems.Add(StockType.Currency);
      li.SubItems.Add(StockType.Symbol);
      li.SubItems.Add(IntToStr(StockType.Shares));

      //c'est ici que se trouve le bout de code 
      //qui te manque :   
       with  StockType do
      for j : = 0to AttributeNodes.Count -1do
      begin
       s :=  Exchange + '::' + AttributeNodes.Nodes[j].NodeName;
       S := S + '=' + AttributeNodes.Nodes[j].NodeValue;
       Memo1.Lines.Append(s);
       end ;
    end;
  finally
    XMLDocument1.Active : = False;
  end;

end;

La propriété Nodes peut aussi bien être adressée par une valeur d'index que par le nom de l'attribut :
property Nodes[const IndexOrName:OleVariant]:IXMLNode;default;

Tu vas enfin pouvoir passer un bon réveillon

PS : c'est toujours mieux de rechercher et de trouver par soi-même mais de là à rester coincé plusieurs jours sur un problème, faut pas non plus basculer dans l'excès inverse. Enfin, c'est courageux de ta part.

May Delphi be with you !
<hr color= "#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
=468_mes2
Messages postés
4
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
7 novembre 2008

merci de ton aide des que je retourne sous delphi je testerai :)
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
J'apprécie beaucoup cette marque de confiance...

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
Messages postés
4
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
7 novembre 2008

si tu etais en face de moi je te ferai un bisou !
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
25
Bon, bon, n'exagérons pas non plus...
Alors, on se la valide cette réponse ?
Bonne continuation.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/