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 xml : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?