Bonjour,

Mon code VBScript utilisant un fichier XML semble ne pas fonctionner.
Je dois pouvoir executer un ensemble d'actions et de sous-actions en fonction de conditions.

Voici les fichiers XML de test :

Code Test_Xml_1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<action id="1" data="data-1.xml">
  <action id="2" data="data-2.xml">
    <condition>pass</condition>
  </action>
</action>
<action id="3" data="data-3.xml">
</action>
Dans ce cas-ci, la sous-action ne doit s'executer QUE si l'action parente est reussie.
Fonctionne correctement...

Code Test_Xml_2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<action id="1" data="data-1.xml">
  <action id="2" data="data-2.xml">
    <condition>pass</condition>
    <condition>fail</condition>
    <condition>warning</condition>
  </action>
</action>
<action id="3" data="data-3.xml">
</action>
Dans ce cas-ci, la sous-action doit s'executer quel que soit le resultat de l'action parente.
Ne fonctionne pas dans le cas d'un fail ou d'un warning...
Fonctionne si le resultat est pass...

Code Test_Xml_3 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<action id="1" data="data-1.xml">
  <action id="2" data="data-2.xml">
    <condition>fail</condition>
    <condition>pass</condition>
    <condition>warning</condition>
  </action>
</action>
<action id="3" data="data-3.xml">
</action>
Dans ce cas-ci, la sous-action doit s'executer quel que soit le resultat de l'action parente.
Ne fonctionne pas dans le cas d'un pass ou d'un warning...
Fonctionne si le resultat est fail...

Voici comment je recherche une action dans le fichier :

Code VBscript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub processAction(action)
 
  ' ...
 
  actionResult=GetActionResult() ' Returns "pass" or "fail" or "warning"
  Set subActions = action.SelectNodes("action[condition='" & actionResult & "']")
 
  For Each subAction in subActions
    processAction subAction
  Next
 
  ' ...
 
End Sub

Auriez-vous une idee de mon erreur lors de la recherche ?

SelectNodes("action[condition='" & actionResult & "']")

On dirait qu'il ne peut pas prendre en compte plus d'un tag <condition> ...

Etant donne que l'objectif de ma recherche est de savoir si oui ou non je dois executer une sous-action (et ne l'executer qu'une seule fois), ne serait-il pas plus correct d'ecrire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub processAction(action)
 
  ' ...
 
  actionResult=GetActionResult() ' Returns "pass" or "fail" or "warning"
  Set subActions = action.SelectNodes("action[condition='" & actionResult & "']")
 
  If subActions.Length > 0 Then ' REPLACE : For Each subAction in subActions
    processAction subActions(0)
  End If ' REPLACE : Next
 
  ' ...
 
End Sub
Merci d'avance !