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 :

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>
La première méthode :

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;
Ici : Res.Count me renvoie 1 ce qui est correct.

Maintenant si je peuple le même XML à mano :

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;
res.Count me renvoie 0. Très gênant et je ne vois pas où se trouve la coquille ?

Merci pour vos pistes bienvenues

Sylvain