XPath SelectSingleNode ne renvoie rien
Bonjour,
J'ai besoin de vos lumières pour comprendre un comportement bizarre de la méthode SelectSingleNode
Tout d'abord, voici un extrait de mon fichier XML
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?xml version='1.0'?>
<PX_ORDER_REQ_MSG>
<MsgData>
<Transaction>
<PX_ORDER_WRK class="R">
<PX_CUSTOMER_WRK class="R">
<ID IsChanged="Y">10000000</ID>
<ID_DR IsChanged="Y">XX</ID_DR>
<SEGMENT IsChanged="Y">P</SEGMENT>
<PX_CONSUMER_WRK class="R">
<FIRST_NAME IsChanged="Y">toto</FIRST_NAME>
<LAST_NAME IsChanged="Y">world</LAST_NAME>
<PX_TITLE IsChanged="Y">M</PX_TITLE>
<PX_TITLE_DESCR IsChanged="Y">Monsieur</PX_TITLE_DESCR>
</PX_CONSUMER_WRK>
</PX_CUSTOMER_WRK>
</PX_ORDER_WRK>
</Transaction>
</MsgData>
</PX_ORDER_REQ_MSG> |
Je souhaite valider le contenu des champs de mon xml node par node, pour cela j'utilise la fonction selectSingleNode.
Voici un extrait de mon code (j'espère ne rien oublier):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Set xmlDoc1 = CreateObject("Microsoft.XMLDOM")
xmlDoc1.LoadXML(strFile)
xmlDoc1.setProperty "SelectionLanguage", "XPath"
If (xmlDoc1.selectsingleNode("//PX_ORDER_REQ_MSG") is nothing) Then
msgbox "L'entrée en base ne correspond pas à un ordre"
ElseIf (xmlDoc1.selectsingleNode("//MsgData") is nothing) Then
msgbox"pas de données disponible"
Else
Set messageNode = xmlDoc1.selectsingleNode("//MsgData")
If messageNode is nothing Then
msgbox "pas de message dans la commande"
Else
... |
jusque là tout va bien,le node messageNode contient bien les données attendues c'est maintenant que ça devient bizarre:
Code:
1 2 3 4 5 6 7 8 9 10
|
...
Set customerNode = messageNode.selectsingleNode("//PX_CUSTOMER_WRK")
If customerNode is nothing Then
msgbox "Le node PX_CUSTOMER_WRK n'est pas présent"
else
msgbox " résultat: " & customerNode.text
end if
end if
end if |
je n'ai pas le message "n'est pas présent" , donc a priori le node existe bien, mais il semble vide.
d'un autre coté, le code suivant me renvoie correctement les données:
Code:
1 2 3 4 5 6 7 8 9 10
|
...
Set customerNode = messageNode.selectsingleNode("//Transaction//PX_CUSTOMER_WRK")
If customerNode is nothing Then
msgbox "Le node PX_CUSTOMER_WRK n'est pas présent"
else
msgbox " résultat: " & customerNode.text
end if
end if
end if |
Avez vous une idée?