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):
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
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 ...
je n'ai pas le message "n'est pas présent" , donc a priori le node existe bien, mais il semble vide.
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
d'un autre coté, le code suivant me renvoie correctement les données:
Avez vous une idée?
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
Partager