begin process at 2008 07 05 14:18:47
1 205 182 membres
158 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : XML et Delphi [ Divers / Débutant(e) ] (Lamarmottedu73)

XML et Delphi le 31/10/2007 09:02:27

Lamarmottedu73
Bonjour tlm, j'ai un problème avec Delphi et le XML. J'utilise un TXMLDocument dans un thread qui scrute différent fichier. Le problème intervien sur un balise du fichier XML.

<ComponentList>
   <Component Id="015-000-555-000">
      <Value>2</Value>
   </Component>
   <Component Id="015-077-666-000">
      <Value>33</Value>
   </Component>
   <Component Id="015-770-566-000">
      <Value>5</Value>
   </Component>
</ComponentList>

Pour accéder à ComponentList je fait un : XMLDocument.ChildNodes.Nodes['ComponentList'];
La question est comment faut-il procéder pour accèder à Component qui possède l'ID 015-077-666-000, sachant que l'ordre peut changer donc First ou Last ne peuvent fonctionner.

Merci pour votre aide car je bloc pas mal, c'est la première fois que je bosse avec du XML.

Re : XML et Delphi le 31/10/2007 09:30:19

Loda
Membre Club
Réponse acceptée !
salut,

il te faut parcourir tout la liste de noeud et tester l'attribut. il n'y pas d'autre moyen d'accéder un noeud selon sa valeur d'attribut.

donc ça te donne un truc genre (pas testé, je suis sur j2me en ce moment):

function chercherNoeudParID(idToFound: string) : ixmlnode;
var
parent : ixmlnode;
begin
result := nil;
parent := XMLDocument.ChildNodes.Nodes['ComponentList'];

for i := 0 to parent.childnodes.count-1 do begin
noeud = parent.getnode(i);
if noeud.HasAttribute("id") then begin
  if noeud.Attributes["id"] = idToFound then begin?
    result = noeud;
    exit;
  end;
end;
end;

end;

si tu choisit le format du xml et que tu as besoin de faire fréquemment des sélections selon l'id, envisage d'utiliser l'ID comme nom de noeud. ceci te opermet de faire directement un getnode(idToFound)

bon code,

Loda

PS: l'xml c'est pas super intuitif au début, mais après quelques utilisation, tu ne sait plus comment tu faisait avant :-)

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

Re : XML et Delphi le 31/10/2007 10:14:19

Lamarmottedu73
Merci bien je viens de coder le tout, corriger quelques truc (Adapter à mon code) et intégrer ça mache !!!

Re : XML et Delphi le 31/10/2007 12:45:41

Guillemouze
sinon (je sais pas si ca peut s'adapter a ton cas), tu peux aussi utiliser l'id comme nodename

<ComponentList>
   <Id015-000-555-000 Value="2" />
   <Id015-077-666-000 Value="33"/>
   <Id015-770-566-000 Value="5"/>
</ComponentList>

Re : XML et Delphi le 31/10/2007 15:40:08

Loda
Membre Club
@Guillemouze: tiens, on a les même idées... ;-)

A+

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

Re : XML et Delphi le 31/10/2007 15:44:19

Lamarmottedu73

En fait je ne peut pas modifier les fichiers XML, ils sont généré par une autre appli donc je garde la première méthode. Par contre je garde l'astuce pour plus tard .

@+



Classé sous : fichier, problème, delphi, xml, componentlist

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS