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

VBA Discussion :

Controler si un noeud existe dans un XML


Sujet :

VBA

  1. #1
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut Controler si un noeud existe dans un XML
    Bonjour,

    Je cherche à contrôler si un nœud existe dans un fichier XML avec de récupérer les données qu'il contient. Voici mon code

    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
     
    Set rcdst = CurrentDb.OpenRecordset("BUYERS")
    For Each NodeData In DomDoc.documentElement.selectNodes("/as:SupplySchedule/as:BuyerParty/asram:AeroSpaceOrganization")
    Set NodeItem = NodeData.cloneNode(True)
    rcdst.AddNew
    rcdst.Fields("GLOBAL_UNIQUE_ID") = GlobalUniqueID
    rcdst.Fields("NAME") = NodeItem.selectNodes("/asram:NameText").Item(0).Text
    rcdst.Fields("REGISTRATION_ID") = NodeItem.selectNodes("/asram:RegistrationIdentifier").Item(0).Text
    rcdst.Fields("UNIT_NAME_CODE") = NodeItem.selectNodes("/asram:UnitNameText").Item(0).Text
    rcdst.Fields("ACTIVITY_CODE") = NodeItem.selectNodes("/asram:Code").Item(0).Text
    rcdst.Fields("@CITY_NAME") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:CityName").Item(0).Text
     
    'A partir d'ici il faut que je contrôle l'existence des nœuds avant d'effectuer les affectations
    rcdst.Fields("@LINE_ONE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineOneText").Item(0).Text
    rcdst.Fields("@LINE_TWO") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineTwoText").Item(0).Text
    rcdst.Fields("@LINE_THREE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineThreeText").Item(0).Text
    rcdst.Fields("@LINE_FOUR") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineFourText").Item(0).Text
    rcdst.Fields("@LINE_FIVE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineFiveText").Item(0).Text
    rcdst.Update
    Next
    rcdst.Close
    Merci de votre aide

  2. #2
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 392
    Points : 395
    Points
    395
    Par défaut
    Tu dis ce que tu veux faire, tu donnes du code mais tu ne dis pas où tu es bloqué et quelle erreur tu rencontres...
    Peux-tu ^^etre plus précis ?

  3. #3
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Ce que je ceux faire c'est testé que les noeuds du XML existe bien avant d'essayer de lire sinon forcement ça ne marche pas.

    Exemple : comme il est noté en commentaire dans le code, il faut que je vérifie que les noeuds suivants existent avant de les lire:

    /asram:AeroSpaceAddress/asram:LineOneText
    /asram:AeroSpaceAddress/asram:LineTwoText
    /asram:AeroSpaceAddress/asram:LineThreeText
    /asram:AeroSpaceAddress/asram:LineFourText
    /asram:AeroSpaceAddress/asram:LineFiveText

    Ils ne sont pas obligatoirement présent dans le XML. Donc si j'exécute les lignes de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rcdst.Fields("@LINE_ONE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineOneText").Item(0).Text
    rcdst.Fields("@LINE_TWO") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineTwoText").Item(0).Text
    rcdst.Fields("@LINE_THREE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineThreeText").Item(0).Text
    rcdst.Fields("@LINE_FOUR") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineFourText").Item(0).Text
    rcdst.Fields("@LINE_FIVE") = NodeItem.selectNodes("/asram:AeroSpaceAddress/asram:LineFiveText").Item(0).Text
    Sans vérifier que les nœuds existent le code ne marche pas. Etant donné que je cherche à automatiser des echanges via ses fichiers je ne peux pas les traiter au cas par cas.

    Codialement

Discussions similaires

  1. Select sur table si balise existe dans Champ XML
    Par dacid dans le forum Développement
    Réponses: 4
    Dernier message: 17/09/2012, 09h48
  2. [DOM4J] Vérifier si un noeud existe dans un fichier XML
    Par Hoegaarden dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/10/2010, 08h08
  3. ajoutter un noeud dans un xml existant
    Par etud_ini dans le forum VB.NET
    Réponses: 1
    Dernier message: 26/10/2008, 20h08
  4. [DOM] Ajouter un noeud dans un XML existant
    Par splifferwolf dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 11/02/2008, 16h01
  5. Réponses: 12
    Dernier message: 24/05/2006, 15h37

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