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 :

SelectSingleNode avec variable


Sujet :

VBScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 64
    Points : 58
    Points
    58
    Par défaut SelectSingleNode avec variable
    Bonjour,
    - Bonne Année 2011 et Bonne Santé -

    Une problématique récurente : l'insertion de variable(s) dans une instruction.
    Précision : Le code est (doit être) en VBScript. Les réponses dans d'autres langages (VB, Net, ...) ne servent à rien.

    L'instruction : SelectSingleNode (string).
    La problématique :
    - Si le "string" est codé "en dur", cela fonctionne impec.
    - Si une partie du "string" est composé d'une variable, cela ne fonctionne pas.
    En cause (interprétation perso.) : des guillemets mal interprétés (bug ?)
    J'utilise l'EDI VBScript Factory et suit sous XP (bientôt sous Seven).

    Diverses recherches sur le Net ne m'ont pas aidé à résoudre ce problème.
    Certes, je pourrais utiliser SelectNodes avec un Do While, mais je suis têtu et veux utiliser SelectSingleNode.

    Pourriez-vous m'aider à résoudre mon problème ?
    D'avance, merci.
    Cordialement.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Option Explicit '--- Permet d'éviter les erreurs "bêtes" c.a.d les noms des variables mal réécris (erreur de frappe)
     
    Dim XmlAlerte, Node, Truc, Machin
    Set XmlAlerte = Createobject("Microsoft.XMLDOM")
    XmlAlerte.Async = False
    XmlAlerte.Load("Alertes_source.xml")
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants/Obj_Type")    ' ok
    Msgbox "N01 " & Node.Text
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[Obj_Type='Switch']") ' Ok
    Msgbox "N02 " & Node.Text
     
    Truc = "WM4"
    Machin ="Composants[@Obj_Nom='" & Truc & "']"
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode(Machin)
    ' Msgbox "N03 " & Node.Text ==> sort en erreur
     
    ' ======> La variable Truc n'est pas prise en compte correctement
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[@Obj_Nom='" & Truc & "']" )
    If Node Is Nothing Then
            Msgbox "N04 " & "vide"
    Else
            Msgbox "N04 " & Node.Text
    End If
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[@Obj_Nom='VM4']" )     ' Ok
    If Node Is Nothing Then
            Msgbox "N05 " & "vide"
    Else
            Msgbox "N05 " & Node.Text
    End If
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[@Obj_Nom='VM4']/Obj_Type")    ' ok
    If Node Is Nothing Then
            Msgbox "N06 " & "vide"
    Else
            Msgbox "N06 " & Node.Text
    End If
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?xml version="1.0" encoding="utf-8"?>
    <Alertes>
             <Composants Obj_Nom="VM4">
                         <Obj_Type>Serveur</Obj_Type>
                         <Obj_Statut>Down</Obj_Statut>
                         <Obj_couleur>Rouge</Obj_couleur>
                         <Obj_NowOFF>21/12/2010 15:30:00</Obj_NowOFF>
                         <Obj_Cause>Serveur</Obj_Cause>
                         <Obj_Comment>Pas de réponse au Ping</Obj_Comment>
             </Composants>
             <Composants Obj_Nom="VM2">
                         <Obj_Type>Serveur</Obj_Type>
                         <Obj_Statut>Down</Obj_Statut>
                         <Obj_couleur>Rouge</Obj_couleur>
                         <Obj_NowOFF>21/12/2010 15:30:00</Obj_NowOFF>
                         <Obj_Cause>Serveur</Obj_Cause>
                         <Obj_Comment>Pas de réponse au Ping</Obj_Comment>
             </Composants>
             <Composants Obj_Nom="VM2S">
                         <Obj_Type>Serveur</Obj_Type>
                         <Obj_Statut>Down</Obj_Statut>
                         <Obj_couleur>Orange</Obj_couleur>
                         <Obj_NowOFF>21/12/2010 15:30:00</Obj_NowOFF>
                         <Obj_Cause>Serveur</Obj_Cause>
                         <Obj_Comment>Pas de réponse au Ping</Obj_Comment>
             </Composants>
             <Composants Obj_Nom="172.17.1.174">
                         <Obj_Type>Switch</Obj_Type>
                         <Obj_Statut>Down</Obj_Statut>
                         <Obj_couleur>Rouge</Obj_couleur>
                         <Obj_NowOFF>21/12/2010 15:30:00</Obj_NowOFF>
                         <Obj_Cause>Inondation</Obj_Cause>
                         <Obj_Comment>Installation sous l'eau</Obj_Comment>
             </Composants>
    </Alertes>

  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 038
    Points
    20 038
    Par défaut
    bonjour,

    et dans tout ce code ou sont les deux lignes identiques l'une avec la chaine en dur et l'autre en utilisant une variable ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Désolé pour l'imprécision.

    Citation Envoyé par bbil Voir le message
    bonjour,

    et dans tout ce code ou sont les deux lignes identiques l'une avec la chaine en dur et l'autre en utilisant une variable ?
    J'ai mis Msgbox en commentaire car sinon, à l'execution, ça plante (tu peux essayer)
    1er pb : Le "string" passé entièrement par une variable n'est pas accepté. Pb d'écriture ?

    Plus bas.

    Le 1er SelectSingleNode, avec la variable "Truc" (qui contient "VM4") rend Nothing (réponse msgbox "Vide")
    Le 2ème SelectSingleNode est entièrement codé "en dur", et cela fonctionne ! (réponse msgbox "Serveur")

    Ces 2 SelectSingleNode permettent de tester l'écriture du 1er SelectSingleNode avec la variable.

    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
    18
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode(Machin)
    ' Msgbox "N03 " & Node.Text ==> sort en erreur
     
    ' ======> La variable Truc n'est pas prise en compte correctement
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[@Obj_Nom='" & Truc & "']" )
    If Node Is Nothing Then
            Msgbox "N04 " & "vide"
    Else
            Msgbox "N04 " & Node.Text
    End If
     
    Set Node = XmlAlerte.DocumentElement.SelectSingleNode("Composants[@Obj_Nom='VM4']" )     ' Ok
    If Node Is Nothing Then
            Msgbox "N05 " & "vide"
    Else
            Msgbox "N05 " & Node.Text
    End If

  4. #4
    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 038
    Points
    20 038
    Par défaut


    pourquoi W et pas V ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par bbil Voir le message


    pourquoi W et pas V ?
    Pourquoi ? Parce que ... J'ai rectifié l'exemple

    Avec le "bon" code, voilà le résultat : Erreur : Jeton attendu eof trouvé ...

    Bref, toujours le même message qui m'exaspère.

    Une idée ?
    Merci.
    Images attachées Images attachées  

  6. #6
    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 038
    Points
    20 038
    Par défaut
    Citation Envoyé par AdD92 Voir le message
    P....
    Avec le "bon" code, voilà le résultat : Erreur : Jeton attendu eof trouvé ...
    ...
    ce serait bien d'avoir le bon code ... avec le code donné, mon seul problème et l'accent sur "réponse au Ping" ... sans cet accent tout fonctionne même la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Msgbox "N03 " & Node.Text '==> sort en erreur

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    J'ai ré-essayé ... Ça marche ???
    Je n'y comprends rien...
    Sauf demande express, je supprimerai (si c'est possible) toute cette discussion.

    Merci encore et désolé du dérangement.

    Cordialement.

    Citation Envoyé par AdD92 Voir le message
    Pourquoi ? Parce que ... J'ai rectifié l'exemple

    Avec le "bon" code, voilà le résultat : Erreur : Jeton attendu eof trouvé ...

    Bref, toujours le même message qui m'exaspère.

    Une idée ?
    Merci.

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

Discussions similaires

  1. Requête avec variable incrémentée sur changement de clé.
    Par souellet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 22h47
  2. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31
  3. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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