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 :

transformer un morceau de .txt en du 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é Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut transformer un morceau de .txt en du xml
    Bonjour à tous,

    je viens vers vous car j'ai un nouvel utilitaire a faire.

    dans cet utilitaire je dois transformer un fichier .txt en dû xml.

    le fichier en point txt et du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    01546432015/JHFQLHFQRLKLFJ/rgfq/UTILE1/UTILE2/UTILE3/UTILE4/ADFG_V3:3:/QEREQ:6:Z_604X9503/LMOUHKLG:6:/SQDEQERERWS:6:/FGHDH:6:/
    seul le code en gras me sert a creer mon xml.
    je doit donc faire une recherche de chaine, mais le probleme est que je ne connais pas la chaine car elle est differente d'un .txt a un autre.
    le seul point identifiable c'est que je connais toujours UTILE1.je doit donc supprimer tout ce qu'il y a avant UTILE1. et pour aller jusqu'a UTILE4 je ne connais pas le nombre de / ni le NB de caractere, je ne peu donc pas me fier a cela pour trouver la fin de chaine a garder. la seule chose que je sais c'est que dés que je trouve un : dans la chaine de caractere ce n'est plus utile pour mon xml, je pense donc qu'il faut faire une recherche jusqu'au premier : et supprimer tout ce qu'il y a apres , mai sje doit aussi supprimer ce quil y a un peu avant (entre le dernier/ et le : ) dans l'exemple citer je retrouve donc un fichier text de la form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UTILE1/UTILE2/UTILE3/UTILE4
    et le xml que je doit creer a partir de ça est de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <grand_mere>
     <mere>
      <enfant>UTILE1</enfant> 
      <enfant>UTILE2</enfant> 
      <enfant>UTILE3</enfant> 
      <enfant>UTILE4</enfant> 
      </mere>
      </grand_mere>
    mon probleme est que je ne sait pas du tout par ou commencer.

    je vous remercie d'avance de l'aide que vous pourrez m'apportez. en esperant avoir ete clair dans ma demande.

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Perso, je commencerais par faire un split avec le / comme séparateur
    j'obtiendarias ainsi un tableau que je peux parcourir et y detecter le premier et le dernier utile

    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
    Private Sub Command1_Click()
      Dim Machaine As String
      Dim Debut As String
      Dim Fin As String
      Machaine = "01546432015/JHFQLHFQRLKLFJ/rgfq/UTILE1/UTILE2/UTILE3/UTILE4/ADFG_V3:3:/QEREQ:6:Z_604X9503/LMOUHKLG:6:/SQDEQERERWS:6:/FGHDH:6:/"
      Debut = "UTILE1"
      Fin = "UTILE4"
      Debug.Print GetEnfants(Machaine, Debut, Fin)
    End Sub
    Private Function GetEnfants(Machaine As String, Debut As String, Fin As String) As String
      Dim Tble As Variant
      Dim iPnt As Integer
      Dim Aprendre As Boolean
      Dim Result As String
     Tble = Split(Machaine, "/")
     Aprendre = False
      For iPnt = 0 To UBound(Tble)
        If Aprendre = False Then
          If Tble(iPnt) = Debut Then
             Result = "<enfant>" & Tble(iPnt) & "</enfant>"
             Aprendre = True
          End If
       Else
         Result = Result & vbCrLf & "<enfant>" & Tble(iPnt) & "</enfant>"
         If Tble(iPnt) = Fin Then
           Aprendre = False
           Exit For
         End If
       End If
      Next
      GetEnfants = Result
    End Function

  3. #3
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    merci delbeke pour cette reponse,

    pourrais tu me dire a quoi sert Split et quel est ça fonction car en copiant ton code sur VB5 il met creer un erreur de compilation.

    merci d'avance.

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Désolé, c'est une fonction introduire dans vb6, vb5 en est depourvu.

    Voici un code vb5 qui l'emule

    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
    Public Function Split(ByVal MyString As String, ByVal Separator As String) As Variant
      Dim iPosit As Long
      Dim Table() As String
      ReDim Table(0)
      iPosit = InStr(MyString, Separator)
      If iPosit = 1 Then
        MyString = Mid$(MyString, Len(Separator) + 1)
        iPosit = InStr(MyString, Separator)
      End If
      While iPosit > 0
        Table(UBound(Table)) = Left(MyString, iPosit - 1)
        MyString = Mid$(MyString, iPosit + Len(Separator))
        ReDim Preserve Table(UBound(Table) + 1)
        iPosit = InStr(MyString, Separator)
      Wend
      Table(UBound(Table)) = MyString
      Split = Table
    End Function
    Tu peux l'ajouter au code precédent ou le mettre dansun module séparé.

    La fonction split permet de separer une chaine de caractères en précisant le caractères séparateur. On obtient alors un tableau ou chaque élément est un des morceaux de la chaine de départ

  5. #5
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    merci, comme cela je recupere bien la chaine dont j'ai besoin.
    par contre cela m'oblige a connaitre UTILE4, or je ne le connais pas.
    mais je devrais reussir a trouver une astuce pour le trouver.

Discussions similaires

  1. fichier de log txt et non xml
    Par dams78 dans le forum Logging
    Réponses: 2
    Dernier message: 21/12/2007, 12h01
  2. extraire donné fichier txt afficher dans xml
    Par jasminrose dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 01/04/2007, 13h14
  3. Générer un fichier ".TXT" à partir de XML/XSL
    Par moi95 dans le forum Windows
    Réponses: 2
    Dernier message: 02/02/2007, 16h31
  4. [Tableaux] transformation d'un fichier txt en xml
    Par edophie dans le forum Langage
    Réponses: 1
    Dernier message: 26/09/2006, 13h55
  5. Réponses: 6
    Dernier message: 14/04/2006, 12h18

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