|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre éprouvé
![]() ![]() |
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 :
Code :
Maintenant si je peuple le même XML à mano : Code :
Merci pour vos pistes bienvenues Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web Mon Blog : http://blog.developpez.com/index.php?blog=89 Mes Articles : http://sjames.developpez.com/ Rubrique XMLRAD: http://xmlrad.developpez.com |
||||||
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 85 ![]() |
As tu vérifié le contenu de ta grappe XML construite à la mano ? Pour cela, un simple test pour vérifier le contenu :
Sinon, je te conseille d'utiliser des noms de variables bien distincts correspondant aux éléments de ta grappe XML. Voilà le code que j'aurai tapé moi pour construire la grappe XML à la mano : Code :
Code :
currentNode := currentNode.AppendChild('LSTID', '');
A+
__________________
Julien C. |
||
|
|
00
|
|
|
#3 | |
|
Membre éprouvé
![]() ![]() |
Citation:
Je vais quand même par principe essayer ton code.... -------------------....... Résultat négatif. Merci, Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web Mon Blog : http://blog.developpez.com/index.php?blog=89 Mes Articles : http://sjames.developpez.com/ Rubrique XMLRAD: http://xmlrad.developpez.com |
|
|
|
00
|
|
|
#4 | ||||
|
Membre éprouvé
![]() ![]() |
J'ai une piste inquiétante il me semble :
Selon l'ordre des ID dans le paquet XML, mon expression XPath me renvoie ou non le bon résultat : Code :
res := lstid.Select('/GENXML/LSTID[ID="1"]'); res.Count me renvoie 1, là ok. Maintenant si on inverse l'ordre des ID dans la grappe XML : Code :
res.Count me renvoie 0, pas marrant. Finalement je viens de trouver une alternative en modifiant la requête XPath : res := lstid.Select('/GENXML/LSTID/ID[.="1"]'); Et là ça fonctionne quelque soit la position de l'élément <ID>. J'aime pas trop ces culbutes de processeur XSLT...style à faire perdre une demi journée Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web Mon Blog : http://blog.developpez.com/index.php?blog=89 Mes Articles : http://sjames.developpez.com/ Rubrique XMLRAD: http://xmlrad.developpez.com |
||||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() |
il y a une grande différence entre
Code :
res := lstid.Select('/GENXML/LSTID[ID="1"]');
Code :
res := lstid.Select('/GENXML/LSTID/ID[.="1"]');
on utilise cette construction lorsque n a plusieurs LSTID, par exmple: Code :
La deuxième écriture permet de se positionner sur l'ID ayant pour valeur 1 alors que précédemment on était seulement positionner sur LSTID. [/quote]
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
||
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() ![]() |
J'avais saisi la nuance entre les deux requêtes XPath, mais dans les deux cas, mon IXMLCursor.Count aurait du me renvoyer 1 en résultat, qu'il me renvoie un <LSTID> résultat, ou bien un <ID> résultat. Le fait est que dans mes exemples, il existe forcément soit un <ID> soit un <LSTID> résultat de ma requête XPath (selon les hypothèses sus indiquées), mais que IXMLCursor.Count reste égal à 0.
Alors que : J'ai testé avec Xcelerator qui m'a confirmé les résultats que j'attendais, c'est à dire que les requêtes XPath avec Xcelerator me renvoient un résultat différent d'avec IXMLCursor (en fait avec le DOM encapsulé). Merci pour tes précisions, Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web Mon Blog : http://blog.developpez.com/index.php?blog=89 Mes Articles : http://sjames.developpez.com/ Rubrique XMLRAD: http://xmlrad.developpez.com |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 85 ![]() |
Sylvain,
Euh, je viens de tester ton code, et tout fonctionne correctement : Code :
__________________
Julien C. |
||
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() ![]() |
ah
Les deux machines fonctionnent avec la même version de XP Pro. Le portable est à jour avec les windows update, pas la station. La version d'XMLRAD : 7.0.8.708 Les MSXML : msxml.dll 8.0.6730.0 (station et portable) msxml2.dll 8.1.7502.0 et 8.30.87.09 (portable) msxml3.dll 8.20.8730.1 et 8.30.99.26 (portable) Sylvain
__________________
.NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web Mon Blog : http://blog.developpez.com/index.php?blog=89 Mes Articles : http://sjames.developpez.com/ Rubrique XMLRAD: http://xmlrad.developpez.com |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 85 ![]() |
Normalement, avec la version que t'as de XMLRAD, ce n'est plus MSXML version 3 qui est utilisée, mais la 4... Tentes une réinstallation d'XMLRAD pour voir, afin de bien réenregistrer les TLB etc..
RDM pourra surement t'apporter plus d'infos là dessus... Il est bcp plus compétent que moi pour tout ce qui concerne le framework et ses librairies
__________________
Julien C. |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() |
MSXML4 c'est avec la RC2, les autres sont en MSXML3
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com