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 :

Parser un XML avec VB


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 38
    Par défaut Parser un XML avec VB
    Bonjour,

    Après avoir écumé la toile et après un petit millier d'essais infructueux, je me tourne vers les pros.
    Donc voilà mon souci ! Je cherche à extraire les données contenues dans chaque balises <value> en fonction du l'attribut du nœud <Data>. Mon code lui, extrait toutes les <values> de <Data>
    J’espère avoir était assez clair
    Merci d'avance

    LE XML
    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
    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
     
    <?xml version='1.0' encoding='UTF-8'?>
    <kml xmlns='http://www.opengis.net/kml/2.2'>
    	<Document>
    		<name>1x semaine Lundi.xlsx</name>
    		<Placemark>
    			<name>038552</name>
    			<description><![CDATA[Description_1]]></description>
    			<styleUrl>#icon-959-62AF44</styleUrl>
    			<ExtendedData>
    				<Data name='Nom Client'>
    					<value>Non_Client_1</value>
    				</Data>
    				<Data name='Lieu Exploitation'>
    					<value>Lieu_Exploit_1</value>
    				</Data>
    				<Data name='Adresse'>
    					<value>Adresse_1</value>
    				</Data>
    				<Data name='Code Postal'>
    					<value>CP_1</value>
    				</Data>
    				<Data name='Ville'>
    					<value>Ville_1</value>
    				</Data>
    				<Data name='Longitude WG284'>
    					<value>Long_1</value>
    				</Data>
    				<Data name='Latitute WG284'>
    					<value>Long_2</value>
    				</Data>
    				<Data name='Service'>
    					<value>Service_1</value>
    				</Data>
    			</ExtendedData>
    			<address>Adresse_1</address>
    		</Placemark>
    <Placemark>
    			<name>038552</name>
    			<description><![CDATA[Description_2]]></description>
    			<styleUrl>#icon-959-62AF44</styleUrl>
    			<ExtendedData>
    				<Data name='Nom Client'>
    					<value>Non_Client_2</value>
    				</Data>
    				<Data name='Lieu Exploitation'>
    					<value>Lieu_Exploit_2</value>
    				</Data>
    				<Data name='Adresse'>
    					<value>Adresse_2</value>
    				</Data>
    				<Data name='Code Postal'>
    					<value>CP_2</value>
    				</Data>
    				<Data name='Ville'>
    					<value>Ville_2</value>
    				</Data>
    				<Data name='Longitude WG284'>
    					<value>Long_2</value>
    				</Data>
    				<Data name='Latitute WG284'>
    					<value>Long_2</value>
    				</Data>
    				<Data name='Service'>
    					<value>Service_2</value>
    				</Data>
    			</ExtendedData>
    			<address>Adresse_2</address>
    		</Placemark>
     
    	</Document>
    </kml>
    Et Le VBA
    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
     
    Sub LectureXml()
     
    Dim oXML As MSXML2.DOMDocument
    Dim oNode As MSXML2.IXMLDOMNode
     
    Set oXML = New MSXML2.DOMDocument
    oXML.async = False
    oXML.Load "R:\@_Agences\Begles\THIERRY\PTV\Mes Tests\Test_Macro\Lundi_dCom.xml"
     
     
    For Each oNode In oXML.SelectNodes("//Data")
    Debug.Print oNode.Text
       Next
     
    End Sub

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    je n'ai pas bien saisi le souci, et ton code semble fonctionnel.
    En fait tu cherches à récupérer la valeur de l'attribut name de ta balise Data ?
    Ou tu veux trouver le XPath pour atteindre les balises Data qui auraient un attribut name en particulier ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 38
    Par défaut
    Salut jopopmk,

    Merci pour ta réactivité, en fait je cherche à récupérer le contenu de la balise <value> dans la <Data> en fonction de name.

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Accessoirement, il faudrait songer à faire déplacer ce sujet, ici c'est la section concernant VB.Net et non pas VBA ;​bien que ces 2 langages partagent des éléments de syntaxe il n'en reste pas moins que ce sont 2 langages fondamentalement différents.

  5. #5
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    VBA : J'avais pas fait attention. J'ai cherché et trouvé une référence COM à MSXML2 dans VS et je m'en suis arrêté là.

    D'après mon test, l'attribut text du noeud renvoie toutes les valeurs de tous les sous-éléments. Ainsi si tu n'as qu'une balise value dans chaque balise Data, alors tu obtiendras la valeur de value, et elle-seule, en appelant oNode.Text.

    Si tu veux un XPath qui pointe directement sur value tu peux essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string xpath = "//Data/value";
    Ça te retournera toutes les balises value, qui sont dans une balise Data n'importe où dans le document.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 38
    Par défaut
    Désolé de pas mettre garé au bon endroit

    En effet J'ai toutes les "value", mais est'il possible de les récupérer en fonction du <Data name = "foo">

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

Discussions similaires

  1. parser du xml avec Hpricot
    Par debutant_linux dans le forum Ruby
    Réponses: 3
    Dernier message: 03/02/2009, 01h14
  2. [SimpleXML] Parser un XML avec SimpleXML_Load_File
    Par mathieu3392 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 12/10/2007, 11h11
  3. parser du xml avec java
    Par 080983 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/07/2007, 09h56
  4. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  5. [DOM XML] Comment parser du XML avec une version 4.3 ?
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 18/10/2005, 15h52

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