[VBScript-XML] - call dans un node avec récupération de variables
Bonjour,
J'utilise un fichier XML pour générer plusieurs actions suivant les informations de ma Base de Données
Pour ceci j'ai besoin d’exécuter des "call" à chaqu'une des boucles effectué
et créer des variables comme ceci :
Prenom = PersonneElement.selectSingleNode("IdentiT/NewText01").text
Mais je voulais externaliser (modulariser mon projet) cette action dans une procédure extérieur au script de base!!!
est-ce possible !!!!
et l'utilisation : des classes en VBScript est-ce une bonne idée? je connais pas!
http://jerome.developpez.com/tutos/classesvbscript/
comme je voudrais modulariser mon projet, et une solution plutot adapter a mon scrip, mais je suis pas vraiment alaise avec le BVSript.
mon projet de base (2009) été en MS-DOS mais il ne me satisfais plus...
Voici mes bout de codes :
Mon Fichier initial
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
' ----- ----- ----- ----- -----
' SelectionDepart
' ----- ----- ----- ----- -----
SelectionDepart = InputBox ("Tapez 1 " & vbCrlf & " ou 2 " & vbCrlf & " ou autres Valeurs" _
, "JojoSs : SelectionDepart" _
, "2")
' ----- ----- ----- ----- -----
' Aiguillage selon la SelectionDepart
' ----- ----- ----- ----- -----
If SelectionDepart = 1 Then
FichierXML = "Peoples_Arbre00_01_Base02.xml"
MsgBox "Fonction if = un" & vbCrlf & _
"FichierXML : " & FichierXML _
, , "JojoSs_Dev... [SelectionDepart - If]"
' OuvertureXML
Call OuvertureXML ()
Elseif SelectionDepart = 2 Then
FichierXML = "Peoples_Arbre00_01_Base02.xml"
MsgBox "Fonction if = Deux" & vbCrlf & _
"FichierXML : " & FichierXML _
, , "JojoSs_Dev... [SelectionDepart - If]"
' OuvertureXML
Call OuvertureXML ()
FichierXML = "Peoples_Arbre00_02_Base02.xml"
MsgBox "Fonction if = Deux" & vbCrlf & _
"FichierXML : " & FichierXML _
, , "JojoSs_Dev... [SelectionDepart - If]"
' OuvertureXML
Call OuvertureXML3 ()
Else
FichierXML = "Peoples_Arbre00_02_Base02.xml"
MsgBox "Fonction if = Autres" & vbCrlf & _
"FichierXML : " & FichierXML _
, , "JojoSs_Dev... [SelectionDepart - If]"
' OuvertureXML
Call OuvertureXML4 ()
End if
' ##### ##### ##### ##### #####
' Fin du Script
' ##### ##### ##### ##### #####
Msgbox "Fin du Script" _
, , "JojoSs Dev"
' ##### ##### ##### ##### #####
' Variables
' ##### ##### ##### ##### #####
Dim FichierXML
' FichierXML :Est le fichier XML a ouvrir
' Node IdentiT
Public Prenom
Public Nom
Public Sexe
' Node Evenements
Public Naiss
Public DateNaiss
Public Dece
Public DateDece
' Node jSOSA
Public jSOSA01
Public jSOSA02
Public jSOSA03
Public jSOSA04
' ##### ##### ##### ##### #####
' Procédures
' ##### ##### ##### ##### #####
' ----- ----- ----- ----- -----
' OuvertureXML
' ----- ----- ----- ----- -----
Sub OuvertureXML ()
' La première chose à faire dans notre code est donc d'initialiser un parseur :
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
' Il nous faut maintenant ouvrir notre fichier.
' On va également indiquer au parseur de charger tout le fichier en mémoire avant de commencer à le parser :
xmlDoc.Async = "false"
' ===== ===== ===== ===== =====
Msgbox "Fichier : " & FichierXML _
, , "JojoSs Dev [FichierXML]"
xmlDoc.Load(FichierXML)
' test d'ouverture
if xmlDoc.Load(FichierXML) Then
Set idDocXMLGenea = xmldoc.SelectSingleNode("//DatasGenea/Id")
MsgBox "identification du Fichier : " & idDocXMLGenea.Text _
, , "JojoSs_Dev... [xmlDoc.Load]"
Else
MsgBox "Erreur ouverture fichier xml" _
, , "JojoSs_Dev... [msg Erreur]"
End If
For Each PersonneElement In xmlDoc.selectNodes("//Personnes/Personne")
Call InitialisationDesVariables ()
Call MsgBox_ ()
' ----- ----- ----- ----- -----
' SelectionvariableSingleNode
' ----- ----- ----- ----- -----
' Node IdentiT
Prenom = PersonneElement.selectSingleNode("IdentiT/NewText01").text
Nom = PersonneElement.selectSingleNode("IdentiT/NewText02").text
Sexe = PersonneElement.selectSingleNode("IdentiT/NewText03").text
' Node Evenements
Naiss = PersonneElement.selectSingleNode("Evenements/NewText01").text
DateNaiss = PersonneElement.selectSingleNode("Evenements/NewText02").text
Dece = PersonneElement.selectSingleNode("Evenements/NewText03").text
DateDece = PersonneElement.selectSingleNode("Evenements/NewText04").text
' Node jSOSA
jSOSA01 = PersonneElement.selectSingleNode("jSOSA/NewText01").text
jSOSA02 = PersonneElement.selectSingleNode("jSOSA/NewText02").text
jSOSA03 = PersonneElement.selectSingleNode("jSOSA/NewText03").text
jSOSA04 = PersonneElement.selectSingleNode("jSOSA/NewText04").text
Call MsgBox_ ()
Next
Set xmlDoc = Nothing
End Sub |
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 22 23 24 25 26 27 28 29 30 31
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<DatasGenea>
<!-- Nodes d'Identification -->
<Id>Arbre 000 Generation 01</Id>
<!-- Nodes d'Arbre -->
<Arbre000>
<Personnes>
<Personne>
<IdentiT>
<NewText01>Jorge</NewText01>
<NewText02>LOPES</NewText02>
<NewText03>M</NewText03>
</IdentiT>
<jSOSA>
<NewText01>Arb00-Gene01-SOSA000001</NewText01>
<NewText02>Arb01-Gene01-OrdreFam00-OrdreNaiss01-Lien00</NewText02>
<NewText03>00.01.000001</NewText03>
<NewText04>0001000001</NewText04>
</jSOSA>
<Evenements>
<NewText01>1975.12.30</NewText01>
<NewText02>[ !?_Ville_?! ], [ !?_Etat / Province_?! ], [ !?_Pays_?! ]</NewText02>
<NewText03>_AAAA-MM-JJ_</NewText03>
<NewText04>[ !?_Ville_?! ], [ !?_Etat / Province_?! ], [ !?_Pays_?! ]</NewText04>
</Evenements>
</Personne>
</Personnes>
</Arbre000>
</DatasGenea> |
Mes procédures (pour la modularisation)
InitialisationDesVariables -> Permet de remettre les variables à un état vide
MsgBox_ -> Permet d’afficher les variables
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
' ----- ----- ----- ----- -----
' Initialisation des variables
' ----- ----- ----- ----- -----
Sub InitialisationDesVariables ()
' Node IdentiT
Prenom = Empty
Nom = Empty
Sexe = Empty
' Node Evenements
Naiss = Empty
DateNaiss = Empty
Dece = Empty
DateDece = Empty
' Node jSOSA
jSOSA01 = Empty
jSOSA02 = Empty
jSOSA03 = Empty
jSOSA04 = Empty
End Sub
' ----- ----- ----- ----- -----
' MsgBox_
' ----- ----- ----- ----- -----
Sub MsgBox_ ()
MsgBox "Prénom : " & Prenom & vbCrlf & _
"Nom : " & Nom & vbCrlf & _
"Sexe : " & Sexe _
, , "JojoSs_Dev... [selectNodes]"
MsgBox "Prénom : " & Prenom & vbCrlf & _
vbCrlf & _
"jSOSA01 : " & jSOSA01 & vbCrlf & _
"jSOSA02 : " & jSOSA02 & vbCrlf & _
"jSOSA03 : " & jSOSA03 & vbCrlf & _
"jSOSA04 : " & jSOSA04 _
, , "JojoSs_Dev... [selectNodes]"
MsgBox "Prénom : " & Prenom & vbCrlf & _
vbCrlf & _
"Naiss : " & Naiss & vbCrlf & _
"DateNaiss : " & DateNaiss & vbCrlf & _
"Dece : " & Dece & vbCrlf & _
"DateDece : " & DateDece _
, , "JojoSs_Dev... [selectNodes]"
End Sub |
J'avais pensé à une structure de cette forme, mais ca marche pas!!! :ptdr: :calim2: :ptdr:
Mon Nouveau Script
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
' ----- ----- ----- ----- -----
' OuvertureXML4
' ----- ----- ----- ----- -----
Sub OuvertureXML4 ()
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "false"
' ===== ===== ===== ===== =====
Msgbox "Fichier : " & FichierXML _
, , "JojoSs Dev [FichierXML]"
xmlDoc.Load(FichierXML)
' test d'ouverture
if xmlDoc.Load(FichierXML) Then
Set idDocXMLGenea = xmldoc.SelectSingleNode("//DatasGenea/Id")
MsgBox "identification du Fichier : " & idDocXMLGenea.Text _
, , "JojoSs_Dev... [xmlDoc.Load]"
Else
MsgBox "Erreur ouverture fichier xml" _
, , "JojoSs_Dev... [msg Erreur]"
End If
For Each PersonneElement In xmlDoc.selectNodes("//Personnes/Personne")
Call InitialisationDesVariables ()
Call MsgBox_ ()
Call SelectionVariableSingleNode ()
Call MsgBox_ ()
Next
Set xmlDoc = Nothing
End Sub |
Ma procédure
SelectionVariableSingleNode [COLOR="#008000"]-> Permet d’afficher les variables issu des Nodes ==>> ne fonctionne pas
msg = Erreur : objet requi: 'PersonneElement'
En faite nul ... :roll: :?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
' ----- ----- ----- ----- -----
' SelectionVariableSingleNode
' ----- ----- ----- ----- -----
Sub SelectionVariableSingleNode ()
' Node IdentiT
Prenom = PersonneElement.selectSingleNode("IdentiT/NewText01").text
Nom = PersonneElement.selectSingleNode("IdentiT/NewText02").text
Sexe = PersonneElement.selectSingleNode("IdentiT/NewText03").text
' Node Evenements
Naiss = PersonneElement.selectSingleNode("Evenements/NewText01").text
DateNaiss = PersonneElement.selectSingleNode("Evenements/NewText02").text
Dece = PersonneElement.selectSingleNode("Evenements/NewText03").text
DateDece = PersonneElement.selectSingleNode("Evenements/NewText04").text
' Node jSOSA
jSOSA01 = PersonneElement.selectSingleNode("jSOSA/NewText01").text
jSOSA02 = PersonneElement.selectSingleNode("jSOSA/NewText02").text
jSOSA03 = PersonneElement.selectSingleNode("jSOSA/NewText03").text
jSOSA04 = PersonneElement.selectSingleNode("jSOSA/NewText04").text
End Sub |
Merci