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

VB 6 et antérieur Discussion :

[VB6] lecture d'XML


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut [VB6] lecture d'XML
    Bonjour,
    je sèche sur un problème surment très simple à résoudre, mais j'ai beau chercher sur les forums, je trouve rien qui me débloque;
    Je cherche à accéder aux données "ADRESSE" (cf ci dessous). J'explique, j'arrive à acéder aux info à la racine et ainsi qu'aux données comme "REMARQUE" pour l'utilisateur, mais dès que je veux descendre d'un crant je sèche.
    voici un exemple d'XML que j'ai sité
    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
     
    <DONNEES Date_creation="14/11/04">
        <UTILISATEUR NOM="PISSARO Camille">
    <RUE1>Rue Victor Hugo</RUE1>
    <RUE2/>
    <CODE_POSTAL>95300</CODE_POSTAL>
    <VILLE>Pontoise</VILLE>
    <PAYS>France</PAYS>
        <REMARQUE>
    azezaezaeze
    </REMARQUE>
        <MELS>
    <ADRESSE Num="1">c.pissaro@pontoise.org</ADRESSE>
    <ADRESSE Num="2">camille.pissaro@impressioniste.pict</ADRESSE>
    </MELS>
    </UTILISATEUR>
        <UTILISATEUR NOM="COURBET Gustave">
    <RUE1>Hôtel Hébert</RUE1>
    <RUE2>Place Robert Fernier</RUE2>
    <CODE_POSTAL>25290</CODE_POSTAL>
    <VILLE>Ornans</VILLE>
    <PAYS>France</PAYS>
        <REMARQUE>
    zaezaezea
    </REMARQUE>
        <MELS>
    <ADRESSE Num="1">g.courbet@free.fr</ADRESSE>
    <ADRESSE Num="2">gustave.courbet@patres.sky</ADRESSE>
    </MELS>
    </UTILISATEUR>
        <UTILISATEUR NOM="GEROME Jean-Léon">
    <RUE1>Musée Georges Garret</RUE1>
    RUE2>1 bis, rue des Ursulines</RUE2>
    <CODE_POSTAL>70000</CODE_POSTAL>
    <VILLE>Vesoul</VILLE>
    <PAYS>France</PAYS>
        <REMARQUE>
    zzaazezaezea
    </REMARQUE>
        <MELS>
    <ADRESSE Num="1">jl.gerome@wanadoo.fr</ADRESSE>
    </MELS>
    </UTILISATEUR>
    </DONNEES>
    voici ce que j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim xText As IXMLDOMElement
    Dim xObjects As IXMLDOMElement
    Dim xTruc As IXMLDOMElement
    Set xObjects = xmlDoc.selectSingleNode("Objects")
     
    For Each xTruc In xmlDoc.getElementsByTagName("MELS")
    If DEBOG = 1 Then Text1 = Text1 & "Objects " & vbCrLf & "---" & vbCrLf
    Next
     
    For Each xTruc In xObjects.getElementsByTagName("ADRESSE") ''Bloque ici!!!
    If DEBOG = 1 Then Text1 = Text1 & "Text " & vbCrLf & "---" & vbCrLf
    Next
    merci d'avance

  2. #2
    Membre éclairé
    Avatar de ridan
    Inscrit en
    Avril 2003
    Messages
    710
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 710
    Par défaut
    Salut

    Une petite remarque concernant ton XML qui est mal formaté (Ce qui gène le parseur lors de la lecture du document) :

    RUE2>1 bis, rue des Ursulines</RUE2>
    Ton fichier XML formaté correctement et indenté :

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <DONNEES Date_creation="14/11/04">
        <UTILISATEUR NOM="PISSARO Camille">
            <RUE1>Rue Victor Hugo</RUE1>
            <RUE2/>
            <CODE_POSTAL>95300</CODE_POSTAL>
            <VILLE>Pontoise</VILLE>
            <PAYS>France</PAYS>
            <REMARQUE>zezaezaeze</REMARQUE>
            <MELS>
                <ADRESSE Num="1">c.pissaro@pontoise.org</ADRESSE>
                <ADRESSE Num="2">camille.pissaro@impressioniste.pict</ADRESSE>
            </MELS>
        </UTILISATEUR>
        <UTILISATEUR NOM="COURBET Gustave">
            <RUE1>Hôtel Hébert</RUE1>
            <RUE2>Place Robert Fernier</RUE2>
            <CODE_POSTAL>25290</CODE_POSTAL>
            <VILLE>Ornans</VILLE>
            <PAYS>France</PAYS>
            <REMARQUE>zaezaezea</REMARQUE>
            <MELS>
                <ADRESSE Num="1">g.courbet@free.fr</ADRESSE>
                <ADRESSE Num="2">gustave.courbet@patres.sky</ADRESSE>
            </MELS>
        </UTILISATEUR>
        <UTILISATEUR NOM="GEROME Jean-Léon">
            <RUE1>Musée Georges Garret</RUE1>
            <RUE2>1 bis, rue des Ursulines</RUE2>
            <CODE_POSTAL>70000</CODE_POSTAL>
            <VILLE>Vesoul</VILLE>
            <PAYS>France</PAYS>
            <REMARQUE>zzaazezaezea</REMARQUE>
            <MELS>
                <ADRESSE Num="1">jl.gerome@wanadoo.fr</ADRESSE>
            </MELS>
        </UTILISATEUR>
    </DONNEES>
    Sinon pour ton problème de lecture du doc, voici un code qui permet de lister les adresses de chaque utilisateur :

    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
        Dim xmlDoc As MSXML2.DOMDocument
        Dim xmlElement As MSXML2.IXMLDOMElement
        Dim userNode As MSXML2.IXMLDOMElement
        Dim emailNode As MSXML2.IXMLDOMElement
     
        Dim myStr As String
     
        Set xmlDoc = New MSXML2.DOMDocument
     
        xmlDoc.async = False
        test = xmlDoc.Load("C:\Data.xml")
     
        If test = True Then
            Set xmlElement = xmlDoc.documentElement
            For Each userNode In xmlElement.getElementsByTagName("UTILISATEUR")
                myStr = ""
                For Each emailNode In userNode.getElementsByTagName("ADRESSE")
                    myStr = myStr + vbCrLf + emailNode.Text
                Next
                MsgBox myStr
            Next
        Else
            MsgBox "erreur de lecture du fichier XML"
        End If
    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    merci bcp, ça marche bien.
    par contre j'ai un autre fichier où je n' arrive pas a avoir "font" dans "Text" qui se trouve lui même dans "Objects".
    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
    <AWT sX="1200" sY="1697">
    <Colors>
    <Color colorId="black" r="0" g="0" b="0" invisible="false"/>
    <Color colorId="white" r="255" g="255" b="255" invisible="false"/>
    </Colors>
    <Objects>
    <Text font="font0" textColor="black" hAlign="left" vAlign="top">
    <Basic xInit="865" yInit="585" xFinal="1017" yFinal="696" xCenter="941" yCenter="640"/>
    <Style lineStyle="solid" lineWidth="3" lineColor="gray" lineEnd="round" patternStyle="full" 
     
    patternColor="rgb(255,255,225)"/>
    <AdvancedStyle style="Shadow" thickness="3" colorTopLeft="lightGray" 
     
    colorBottomRight="gray"/>
    <Content/>
    </Text>
     
        <Text font="font1" textColor="rgb(0,0,128)" hAlign="left" vAlign="top">
    <Basic xInit="861" yInit="749" xFinal="1018" yFinal="876" xCenter="939" yCenter="812"/>
    <Style lineStyle="solid" lineWidth="3" lineColor="gray" lineEnd="round" patternStyle="full" 
     
    patternColor="rgb(128,255,255)"/>
    <AdvancedStyle style="Shadow" thickness="3" colorTopLeft="lightGray" 
     
    colorBottomRight="gray"/>
    <Content>properties tests</Content>
    </Text>
     
        <Text font="font0" textColor="black" hAlign="left" vAlign="top">
    <Basic xInit="861" yInit="924" xFinal="1017" yFinal="1060" xCenter="939" yCenter="992"/>
    <Style lineStyle="solid" lineWidth="3" lineColor="gray" lineEnd="round" patternStyle="full" 
     
    patternColor="rgb(221,190,181)"/>
    <AdvancedStyle style="Shadow" thickness="3" colorTopLeft="lightGray" 
     
    colorBottomRight="gray"/>
    <Content/>
    </Text>
     
        <Text font="font2" textColor="black" hAlign="left" vAlign="top">
    <Basic xInit="856" yInit="1107" xFinal="1082" yFinal="1211" xCenter="969" yCenter="1159"/>
    <Style lineStyle="solid" lineWidth="3" lineColor="gray" lineEnd="round" patternStyle="full" 
     
    patternColor="rgb(255,255,225)"/>
    <AdvancedStyle style="Shadow" thickness="3" colorTopLeft="lightGray" 
     
    colorBottomRight="gray"/>
    <Content>Tests</Content>
    </Text>
     
        <Text font="font0" textColor="black" hAlign="left" vAlign="top">
    <Basic xInit="851" yInit="1238" xFinal="983" yFinal="1388" xCenter="917" yCenter="1313"/>
    <Style lineStyle="solid" lineWidth="3" lineColor="gray" lineEnd="round" patternStyle="full" 
     
    patternColor="rgb(255,255,225)"/>
    <AdvancedStyle style="Shadow" thickness="3" colorTopLeft="lightGray" 
     
    colorBottomRight="gray"/>
    <Content/>
    </Text>
     
        <CustomObject name="DisplayText" >
    <Basic xInit="21" yInit="37" xFinal="121" yFinal="138" xCenter="71" yCenter="87"/>
    </CustomObject>
    </Objects>
    </AWT>
    j'ai essayé ça et ça renvoi rien:

    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
    Dim Indice%
    Dim taille As Integer
    Dim myStr As String
    Dim xmlElement As MSXML2.IXMLDOMElement
    Dim userNode As MSXML2.IXMLDOMElement
    Dim emailNode As MSXML2.IXMLDOMElement
    'Dim xText As IXMLDOMElement
    'Dim xObjects As IXMLDOMElement
    'Dim xTruc As IXMLDOMElement
    'Dim ListeDeNoeuds As IXMLDOMNodeList
    'Dim NoeudRecherché As IXMLDOMNode
                Set xmlElement = xmlDoc.documentElement
                For Each userNode In xmlElement.getElementsByTagName("Objects")
                    myStr = ""
                    For Each emailNode In userNode.getElementsByTagName("Text")
                        myStr = myStr & vbCrLf & emailNode.getAttribute("font")
                    Next
                    If myStr = "" Then
                    MsgBox "_Rien à voir_"
                    Else: MsgBox myStr
                    End If
     
     
                Next
    merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Par défaut
    Salut,

    Je te conseil de créer une fonction récursive qui te permettra de lire un fichier XML quelque soit sa profondeur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    heu... je veux bien mais on fais ça comment...

  6. #6
    Membre éclairé
    Avatar de ridan
    Inscrit en
    Avril 2003
    Messages
    710
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 710
    Par défaut
    re,

    Pourrais-tu organiser ton code XML stp ça facilite la lecture pour ceux qui veulent t'aider

    ++

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

Discussions similaires

  1. [VB6]Lecture d'attributs XML
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/05/2006, 16h01
  2. [VB6]lecture d'un fichier dbf
    Par lc.soft dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/01/2006, 14h59
  3. Réponses: 3
    Dernier message: 09/12/2005, 17h42
  4. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11
  5. [DOM] Lecture de XML et décision en fonction du contenu
    Par samios dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 14/10/2004, 16h09

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