Parcours d'un fichier XML [Résolu]

Messages postés
4
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
10 septembre 2009
- - Dernière réponse : 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.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_47
Messages postés
4
Date d'inscription
samedi 25 juin 2005
Statut
Membre
Dernière intervention
10 septembre 2009
0
Merci
Yes !!! ça fonctionne avec cette solution. Merci beaucoup 47 pour l'aide.

bonne journée
Commenter la réponse de TrustNoOne