Parcours d'un fichier XML

Résolu
TrustNoOne Messages postés 4 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 10 septembre 2009 - 9 sept. 2009 à 14:46
TrustNoOne Messages postés 4 Date d'inscription samedi 25 juin 2005 Statut Membre Dernière intervention 10 septembre 2009 - 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.
A voir également:

2 réponses

cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
9 sept. 2009 à 17:21
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
3
Rejoignez-nous