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 :

[]générer et LIRE du xml avec vb: sélection d'un node


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut []générer et LIRE du xml avec vb: sélection d'un node
    Hello :o
    J'ai un petit problème, j'ai un fichier xml qui a cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <rutas>
    	<ruta tipo="central" url="/imagenes/home/home/directorio_gg/diablo_gg.swf"
    enlace="/edicion/cm/bin/xslt.asp?xml=estrenos/3400/estreno3469.xml&amp;xsl=estrenos/estrenos.xsl"/>
    	<ruta tipo="central" url="/imagenes/home/home/directorio_mm/abajoelamor_mm.swf"
    enlace="/edicion/cm/bin/reportaje.asp?type=primeraplana&amp;dir=/interna/abajoelamor&amp;file=index.htm"/>  
    	<ruta tipo="central" url="/imagenes/home/home/directorio_mm/concursolaliga_mm.swf" 
    enlace="/edicion/cm/bin/reportaje.asp?type=concurso&amp;dir=/interna/laligadeloshombresext&file=index.htm"/>
                   <ruta tipo="central" url="/imagenes/home/home/directorio_mm/diasdefutbol_mm.swf" 
    enlace="/edicion/cm/bin/xslt.asp?xml=preestrenos/1100/preestreno1159.xml&amp;xsl=preestrenos/preestrenos.xsl"/>
     
    <ruta tipo="central" url="/imagenes/home/home/directorio_mm/seanconnery_mm.swf" enlace="/edicion/cm/bin/reportaje.asp?type=perfil&amp;dir=/interna/s_connery&amp;file=index.htm"/>	
    <ruta tipo="promocion" url="/imagenes/home/home/directorio_g/cartelera_g.swf"/>
    </rutas>
    pour l'instant ce fichier est créé manuelement mais je dois faire un prog en vb qui le crée automatiquement (l'utilisateur a juste a sélectionner les fichiers). Problème, comment sélectionner mes nodes "ruta", en effet j'en ai plusieurs dans le même fichier et je n'arrive pas à les sélectionner pour les remplacer Par exemple si l'utilisateur ne veut changer que le deuxième fichier, je veux que mon programme ne sélectionne que le deuxième node
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    A vue de nez, deux solutions (aussi marteau-piqueur l'une que l'autre, mais bon...):

    1) Generer proprement ton fichier en faisant un sorte que chaque tag <ruta ...> occupe 1 ligne (sans VbCrLf au milieu). Il sera ainsi stocké sous cette forme dans le fichier XML (à verifier) et tu pourra recuperer le noeud que tu veux grace au numero de ligne + une constante.

    2) Recuperer les noeuds dans un string (on l'appelle chaine pour simplifier), mais sans les <Rutas> finaux (avec Instr et Mid, ca marchera bien)

    Tu auras donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    chaine="<ruta ...><ruta ...> ... <ruta ...>" 'etc...
    'puis tu fais:
    Dim chaines() as String
    chaines=Replace(chaine,"<ruta","|<ruta") 'pour obtenir un bon separateur
    chaines=Split(chaine,"|")
    T'auras un tableau de string que tu peux modifier. Ensuite, tu reassemble le tout en virant les "|" avec Replace et voila...

    Bon, bien sur, la 1ere solution est de loin preferable...

    Bon courage et fais pas une insomnie chronique comme 90% des espagnols...
    Grafikm
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    salut, en fait j'ai essayé de créer mais node en boucle mais mon code ne marche pas, il ne me crée qu'une balise ruta :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set xdoc = xml.createElement("rutas")
    'on crée la balise ruta
    For numanim = 0 To numanim = 6 Step 1
    Set xheader = xml.createElement("ruta")
    'On définit le header comme fils du document principal
    xdoc.appendChild xheader
    xheader.setAttribute "tipo", "central"
    xheader.setAttribute "url", routas(1)
    'on définit l'élément principal comme étant xdoc
    Set xml.documentElement = xdoc
    Next numanim
    'on enregistre le tout dans un fichier rutas2.xml
    xml.save "D:\progxml\rutas2.xml"

  4. #4
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    bon, moi j'ai une autre solution mais elle va pas te plaire :
    fait ton prog en JAVA ...
    bon, désolé.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    Pourquoi ça me plairait pas, si c'est plus simple je suis preneur. T'as déjà fait l'expérience :

  6. #6
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    carrément, java et XML marchent bien ensemble.
    je disais ça parce que je pensais que le langage t'était imposé ...
    mais si ils te laissent le choix, alors hésite pas.
    Java intègre une API xml qui te permet de gérer le XML tel qu'il est prévu dans la norme ... sans avoir besoin d'avoir une balise sur une seule ligne ou quelque chose dans ce genre la...
    tu devrais trouver ton bonheur dans les forum JAVA ou XML ...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    Euh... avant que je me lance dans Java , y'a personne qui a d'autres solutions??

  8. #8
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    c'est normale qu'une seule balise soit crée:

    faut ecrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For numanim = 0 To 6 Step 1
    Sinon ca marche pas (je viens de verifier)
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  9. #9
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    en fait, je te conseillais java parce que normalement, XML est un format d"échange de fichier et tu ne devrais pas supposer que il n'y a qu'une balise par ligne, ou que tu n'a pas le droit de sauter des lignes ... etc.
    Par contre, si c'est en interne et que tu maitrise mieux VB que java, c'est clair qiue tu va pas te faire chier ... y'a peut etre meme des librairies qui traitent le XML ... avec la vague XML, ca m'etonnerai que ca n'existe pas

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    ok, merci pour vos conseils. en fait ça marche très bien en VB, j'ai encore quelques détails à régler mais ça prend forme... je vous tiens au courant

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    Bon, pour l'enregistrement pas de problème, ça roule. mais maintenant j'aimerais pouvoir lire et stocker dans un tableau les données d'un fichier xml. En Flash, on a des commandes de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.firstChild.childNodes[1].childNodes[0].attributes.nom
    pour pouvoir lire les attributs (ici un nom) de tel ou tel node, est-ce qu'il y a une syntaxe similaire en vb?
    Merci d'avance

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    bonjour, alors voilà j'ai avancé un peu. tout marche en fin presque. 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Function chargement(fichero)
    Dim numerorutas As Integer
    Dim i As Integer
    Dim objxml As New MSXML.DOMDocument
    Dim xmllist As MSXML.IXMLDOMNodeList
    Dim xmlnode As MSXML.IXMLDOMNode
    Dim argumento0 As MSXML.IXMLDOMAttribute
    Dim argumento1 As MSXML.IXMLDOMAttribute
    Dim argumento2 As MSXML.IXMLDOMAttribute
    objxml.validateOnParse = False
    objxml.async = False
    If objxml.Load(Dir1.Path & "\" & fichero) Then
        'MsgBox ("objxml.Text  " & objxml.Text)
        Set xmllist = objxml.selectNodes("//rutas/ruta")
        'MsgBox argumentos
        numerorutas = xmllist.length
        i = 0
         'MsgBox ("xmllist.lenght  " & numerorutas)
            For Each xmlnode In xmllist
            Set argumento0 = xmlnode.Attributes(0)
            If argumento0.Text <> vbNullString Then
            'MsgBox argumento0.Text
            datos(i, 0) = argumento0.Text
            End If
            Set argumento1 = xmlnode.Attributes(1)
            If argumento1.Text <> vbNullString Then
            'MsgBox argumento1.Text
            datos(i, 1) = argumento1.Text
            End If
            Set argumento2 = xmlnode.Attributes(2)
            If i < 5 Then
            'MsgBox argumento2.Text
             datos(i, 2) = argumento2.Text
            End If
            'MsgBox ("xmlnode.Text  " & xmlnode.Text)
            i = i + 1
            Next
        MsgBox ("numero de rutas  " & i)
        On Error GoTo ErrorHandler
        objxml.validateOnParse = True
        Else
    tout ce qui me manque, c'est de pouvoir compter le nombre d'attributs par node pour éviter de faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set argumento2 = xmlnode.Attributes(2)
    pour chaque attributs, là ça va j'en ai que 3 par nodes, mais bon ça fait pas très "pro".

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

Discussions similaires

  1. [DOM] lire du xml avec du javascript
    Par redah75 dans le forum Général JavaScript
    Réponses: 45
    Dernier message: 12/09/2008, 17h18
  2. [XPATH] lire un xml avec JXPATH
    Par nalvon dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2008, 11h33
  3. Lire du xml avec shell
    Par rootdaoud dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/10/2007, 16h19
  4. [XML] [XSLT] Lire du XML avec du XSL
    Par koudjo dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/06/2006, 20h51
  5. Lire un xml avec javascript et generer code html ?
    Par zevince dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/04/2006, 11h45

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