re,
J'initialise de deux manières différentes une même grappe XML, soit en la chargeant à partir d'un fichier, soit en la modélisant par code.
Ensuite, j'applique un Select(XPath) sur cette grappe XML.
Selon le mode de création de la grappe, je n'obtiens pas le même résultat.
Cas pratique :
La grappe XML :
La première méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <GENXML> <TYPEGEN>1</TYPEGEN> <LSTID> <ID>1</ID> <ID>16</ID> </LSTID> </GENXML>
Ici : Res.Count me renvoie 1 ce qui est correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.Button1Click(Sender: TObject); var lstid, currentNode, res: IXMLCursor; begin lstid := TXMLCursor.Create; lstid.Load('genXML.xml'); res := lstid.Select('/GENXML/LSTID[ID="1"]'); end;
Maintenant si je peuple le même XML à mano :
res.Count me renvoie 0. Très gênant et je ne vois pas où se trouve la coquille ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm1.Button1Click(Sender: TObject); var lstid, currentNode, res: IXMLCursor; begin lstid := TXMLCursor.Create; currentNode := lstid.AppendChild('GENXML', ''); currentNode.AppendChild('TYPEGEN', '1'); currentNode := currentNode.AppendChild('LSTID', ''); currentNode.AppendChild('ID', '16'); currentNode.AppendChild('ID', '1'); res := lstid.Select('/GENXML/LSTID[ID="1"]'); end;
Merci pour vos pistes bienvenues![]()
Sylvain
Partager