Parcours d'un fichier XML [Résolu]

TrustNoOne 4 Messages postés samedi 25 juin 2005Date d'inscription 10 septembre 2009 Dernière intervention - 9 sept. 2009 à 14:46 - Dernière réponse : TrustNoOne 4 Messages postés samedi 25 juin 2005Date d'inscription 10 septembre 2009 Dernière intervention
- 10 sept. 2009 à 09:41
Bonjour à tous,

J'ai un petit soucis pour la lecture d'un fichier XML. J'ai effectué des modifs en long en large en travers mais rien n'y fait.
Après debug, j'arrive bien a entrer dans le doc XML, à pouvoir lire la donnée title "title001" lors du passage de la première boucle. A la seconde boucle, la valeur est toujours à title001 au lieu de title002 ??!!

Je laisse ici mon fichier xml ainsi que le code.

//************
// Fichier XML
//************

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="0.91">


<link>http://www./img1.bmp</link>


<title>title001</title>
<link>http://001.fr</link>
<description>description001</description>


<title>title002</title>
<link>http://002.fr</link>
<description>description002</description>


<title>title003</title>
<link>http://003.fr</link>
<description>description003</description>

</rss>
//*****************
// fin fichier XML
//*****************

//*****************
// code delphi
//*****************
var
ixml : IXMLDocument;
titre: WideString
ANode : IXMLNode;
[...]

ixml := TXMLDocument.create(Nil);
ixml.FileName := 'C:\XML\doc2.xml'; /* cf. fichier ci-dessus */
ixml.Active := True;

startItemCode := ixml.DocumentElement.ChildNodes.FindNode('channel');
ANode := startItemCode;
repeat
titre:= ANode.ChildNodes['title'].Text;
ANode.NextSibling;
until ANode = nil;
//*****************
// fin code delphi
//*****************


Je suis également passé par une structure telle que
for i := 0 to noeud.ChildNodes.count-1 do
begin
[...]
with Nodes['item'].ChildNodes do
begin
titre:= Nodes['title'].text; /* idem : reste toujours à la valeur title001 alors que le i s'incrémente bien */
end;
[...]
end;

//
Aucun exemple trouvé sur le net n'a pu solutionné mon problème :(
Si qq'un a une idée...

D'avance merci pour votre aide.
Afficher la suite 

2 réponses

Répondre au sujet
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 9 sept. 2009 à 17:21
+3
Utile
Bonjour,

peut être une solution (j'ai mis le composant TXMLDocument, nommé XMLDoc, sur une form) testé sous Delphi2006

var i, cpt : integer;
tmp :  IXMLNode;
begin
  XMLDoc.LoadFromFile('test.xml');
  with XMLDoc.ChildNodes.Nodes['rss'].ChildNodes do begin
        cpt:=Nodes['item'].ChildNodes.Count;
        tmp:=Nodes['item'];
        for I := 0 to cpt - 1 do begin
          ShowMessage(tmp.ChildValues['title']);
          tmp:=tmp.NextSibling;
        end;
  end;
end;


retourne title001, title002 et title003

bonne soirée
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_47
TrustNoOne 4 Messages postés samedi 25 juin 2005Date d'inscription 10 septembre 2009 Dernière intervention - 10 sept. 2009 à 09:41
0
Utile
Yes !!! ça fonctionne avec cette solution. Merci beaucoup 47 pour l'aide.

bonne journée
Commenter la réponse de TrustNoOne

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.