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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Récupération de valeurs dans un fichier XML


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 54
    Points : 56
    Points
    56
    Par défaut Récupération de valeurs dans un fichier XML
    Bonjour à tous,

    J’essaie de développer un petit script VBS qui me lirait un fichier XML et en extrairait certains éléments.
    Je m’explique. Mon fichier XML ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ITEM ID="RT789" SUPPORT="5"><OWNER>TEX</OWNER><GROUP>BILLING</GROUP><TEST>Unknown</TEST><CODE>5</CODE><CODEGROUP>45</CODEGROUP></ITEM>
    <ITEM ID="YN524" SUPPORT="8"><OWNER>OHI</OWNER><GROUP>BILLING</GROUP><TEST>Unknown</TEST><CODE>20</CODE><CODEGROUP>12</CODEGROUP></ITEM>
    <ITEM ID="WQ102" SUPPORT="9"><OWNER>REP</OWNER><GROUP>MANAG</GROUP><TEST>Unknown</TEST><CODE>32</CODE><CODEGROUP>87</CODEGROUP></ITEM>
    ...
    Pour chaque ITEM, je souhaite récupérer l’ID, le CODE et le CODEGROUP et afficher les résultats dans une MessageBox. Par rapport à mon exemple, je voudrais récupérer donc les valeurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ID=RT789 CODE=5 CODEGROUP=45
    ID=YN524 CODE=20 CODEGROUP=12
    ID=WQ102 CODE=32 CODEGROUP=87

    J’ai tenté de lancer le code suivant qui ne m'affiche absolument rien. Quelqu’un aurait-il une idée de comment récupérer ces infos ?
    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
    16
    17
    Option Explicit
     
    Dim xmlDoc, xmlAttrib, StrID, StrCode, StrGroup, nodeParent
     
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.async = "false" ' permet de charger entièrement le document en mémoire avant le traitement
    xmlDoc.Load ("C:\TEMP\Fichier.xml")
     
    For Each nodeParent In xmlDoc.selectNodes("/ITEM") 
        StrID = nodeParent.selectSingleNode("ID").text
        StrCode = nodeParent.selectSingleNode("CODE").text
        StrGroup = nodeParent.selectSingleNode("CODEGROUP").text
        MsgBox "ID=" & StrID & " CODE=" & StrCode & " CODEGROUP=" & StrGroup
    Next
     
    Set xmlAttrib = Nothing
    Set xmlDoc = Nothing

    Merci d’avance pour votre aide.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour,

    plusieurs chose... ton XML est complet ? il semble manquer la 1° ligne de déclaration et la balise racine...?

    message d'erreur ?

    affiche le résultat d'ouverture de ton fichier xml en modifiant la ligne 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If not xmlDoc.Load ("C:\TEMP\Fichier.xml") Then msgbox "Erreur ouverture fichier xml"

    L'ID est un attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     StrID = nodeParent.getAttribute("ID")

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 54
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    La rapidité des réponses dans ce forum m'impressione toujours autant !

    J'ai réussi à résoudre le problème. Tu avais mentionné la balise racine à laquelle je n'avais pas fait attention. Je l'ai rajoutée dans mon code (cf ci-dessous en rouge) et maintenant, ça marche! Ci-dessous le code modifié au cas où cela servirait à d'autres personnes.

    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
    16
    17
    Option Explicit
     
    Dim xmlDoc, xmlAttrib, StrID, StrCode, StrGroup, nodeParent
     
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.async = "false" ' permet de charger entièrement le document en mémoire avant le traitement
    xmlDoc.Load ("C:\TEMP\Fichier.xml")
     
    For Each nodeParent In xmlDoc.selectNodes("/LISTITEM/ITEM") 
        StrID = nodeParent.getAttribute("ID")
        StrCode = nodeParent.selectSingleNode("CODE").text
        StrGroup = nodeParent.selectSingleNode("CODEGROUP").text
        MsgBox "ID=" & StrID & " CODE=" & StrCode & " CODEGROUP=" & StrGroup
    Next
     
    Set xmlAttrib = Nothing
    Set xmlDoc = Nothing

    Merci de ton aide!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupération valeur dans un fichier XML
    Par lola79 dans le forum Langage
    Réponses: 14
    Dernier message: 20/04/2012, 12h20
  2. Difficulté concernant la récupération de valeur dans un fichier xml
    Par Raphael1980 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/02/2010, 11h49
  3. [XSLT]Récupération d'information dans un fichier XML
    Par LoDev dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/01/2008, 09h36
  4. [DOM XML] Modification de valeur dans un fichier XML
    Par scorpion1611 dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 05/09/2007, 14h53
  5. Modifier une valeur dans un fichier xml
    Par arthrax dans le forum VBScript
    Réponses: 3
    Dernier message: 03/04/2007, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo