IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ VBScriptConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 108, dernière mise à jour : 2 mars 2019  Ajouter une question

 


Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB.

Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript.

Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil.

L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.

SommaireVB ScriptXML (6)
précédent sommaire suivant
 

Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :

Code vb : Sélectionner tout
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
'-- Créer un document XML 
Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
  
' Créer et ajouter la racine dans le document 
' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML 
Set oRacine = xmlDoc.createElement("Racine") 
  
' Ajouter la racine dans le document 
xmlDoc.appendChild oRacine 
  
' Ajouter un élément 
Set oElement = xmlDoc.selectSingleNode("Racine")  ' positionnement sur la racine 
Set oElement = xmlDoc.createElement("element")    ' création d'un fils membre 
xmlDoc.documentElement.appendChild oElement       ' crée le fils de la racine 
  
' Ajouter des champs balises 
Set oNom = xmlDoc.createElement("nom") 
oNom.Text = "LENOM" 
oElement.appendChild oNom 
Set oNom = Nothing 
  
Set oPrenom = xmlDoc.createElement("prenom") 
oPrenom.Text = "Prénom" 
oElement.appendChild oPrenom 
Set oPrenom = Nothing 
Set oElement = Nothing 
  
'-- Indenter le fichier créé 
set rdr = CreateObject("MSXML2.SAXXMLReader") 
set wrt = CreateObject("MSXML2.MXXMLWriter") 
Set oStream = CreateObject("ADODB.STREAM") 
oStream.Open 'Ouverture objet stream.. 
oStream.Charset = "ISO-8859-1" 
  
wrt.indent = True 
wrt.encoding = "ISO-8859-1" 
wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet Stream 
Set rdr.contentHandler = wrt 
Set rdr.errorHandler = wrt 
rdr.Parse xmlDoc 
wrt.flush 
  
' Sauver le fichier créé 
oStream.SaveToFile "test1.xml", 2 
  
' Détruire les objets 
Set rdr = Nothing 
Set wrt = Nothing 
Set xmlDoc = Nothing

Résultat :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<Racine Create="03/03/2007"> 
    <element> 
        <nom>LENOM</nom> 
        <prenom>Prénom</prenom> 
    </element> 
</Racine>

Mis à jour le 27 février 2014 SfJ5Rpw8 ThierryAIM

Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
'-- Lire un document XML 
Set xmlDoc=CreateObject("Microsoft.XMLDOM") 
  
'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitement 
xmlDoc.Async="false" 
  
'Charger le document en mémoire 
xmlDoc.Load("c:\test1.xml") 
  
For each x in xmlDoc.documentElement.childNodes 
   Msgbox x.nodename & " : " & x.text 
Next 
Set xmlDoc = Nothing

Mis à jour le 28 février 2007 SfJ5Rpw8

La méthode SetAttribute de l'objet Element permet de spécifier un attribut pour une balise XML.

Un attribut se compose de deux paramètres :

  • un identificateur
  • la valeur de l'attribut


Reprenons l'exemple précédent et ajoutons un attribut Date au nœud racine et un attribut ID pour le nœud element :

Code vb : Sélectionner tout
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
'-- Créer un doc XML 
Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'") 
xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0) 
  
' Créer et ajouter la racine dans le document 
' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML 
Set oRacine = xmlDoc.createElement("Racine") 
  
' Ajouter un attribut Date de création du document 
oRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate)  
  
' Ajouter la racine dans le document 
xmlDoc.appendChild oRacine 
  
' Ajouter un élément 
Set oElement = xmlDoc.selectSingleNode("Racine")  ' positionnement sur la racine 
Set oElement = xmlDoc.createElement("element")    ' création d'un fils membre 
  
' Ajouter un attribut ID à l'élément créé 
oElement.setAttribute "ID", "1" 
xmlDoc.documentElement.appendChild oElement       ' crée le fils de la racine 
  
' Ajouter des champs balises 
Set oNom = xmlDoc.createElement("nom") 
oNom.Text = "LENOM" 
oElement.appendChild oNom 
Set oNom = Nothing 
  
Set oPrenom = xmlDoc.createElement("prenom") 
oPrenom.Text = "Prénom" 
oElement.appendChild oPrenom 
Set oPrenom = Nothing 
Set oElement = Nothing 
  
' Sauver le fichier créé 
xmlDoc.save ("test1.xml") 
Set xmlDoc = Nothing

Résultat :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
  
<?xml version="1.0" encoding="ISO-8859-1"?> 
<Racine Créé_le="19/02/2007"> 
     <element ID="1"> 
          <nom>LENOM</nom> 
          <prenom>Prénom</prenom> 
     </element> 
</Racine>

Mis à jour le 28 février 2007 ThierryAIM

C'est bien gentil de créer un document XML, encore faut-il pouvoir accéder à son contenu et en retirer les informations qui nous intéressent :

Sur la base de l'exemple précédent, comment récupérer les valeurs de la balise nom en utilisant la méthode getElementsByTagName :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
'-- Lire un doc XML 
Set xmlDoc=CreateObject("Microsoft.XMLDOM") 
xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitement 
xmlDoc.load("test1.xml") 
  
' Lister les valeurs par nom de balise 
    Set oElement = xmlDoc.documentElement 
  
    If Not oElement Is Nothing Then 
        For Each x In oElement.getElementsByTagName("nom") 
            MsgBox x.Text 
        Next 
    End If

Mis à jour le 28 février 2007 ThierryAIM

La méthode GetAttribute de l'objet Element permet d'accéder aux attributs d'une balise noeud :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
  
'-- Lire un doc XML 
Set xmlDoc = CreateObject("Microsoft.XMLDOM") 
xmlDoc.async = "false"  
xmlDoc.load("test1.xml") 
  
' Pour tous les noeuds "element", renvoie l'attribut "ID" 
' Attention à la casse ! 
For Each oElement In xmlDoc.getElementsByTagName("element") 
      MsgBox oElement.getAttribute("ID") 
Next

Mis à jour le 28 février 2007 SfJ5Rpw8

L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un squelette en VBScript.
Remplacer les expressions entre accolades par les valeurs réelles ou des paramètres (ex.: {namespace}) :

Code vb : Sélectionner tout
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
Dim WshShell 
Set WshShell=CreateObject("WScript.Shell") 
  
Dim xmlDoc 
set xmlDoc=CreateObject("Msxml2.DOMDocument.6.0") 
xmlDoc.async=false 
xmlDoc.validateOnParse=true 
  
Dim xmlSchema 
set xmlSchema=CreateObject("Msxml2.DOMDocument.6.0") 
xmlSchema.async=false 
xmlSchema.validateOnParse=true 
xmlSchema.load {le chemin d acces au schema} 
  
Dim xsdCache 
set xsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0") 
xsdCache.add {namespace}, xmlSchema 
Set xmlDoc.schemas = xsdCache 
  
xmlDoc.load {le chemin d acces au fichier XML} 
  
Set myErr=xmlDoc.parseError 
If(myErr.errorCode<>0)Then 
        WScript.Echo("errorReason="+myErr.reason) 
else 
        WScript.Echo("ok") 
End If

Mis à jour le 27 novembre 2006 ckeromen

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.