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

XML/XSL et SOAP Discussion :

Convertion d'un .txt (dipiscan) vers .xml (italc)


Sujet :

XML/XSL et SOAP

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseaux télécom
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseaux télécom
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 82
    Points
    82
    Par défaut Convertion d'un .txt (dipiscan) vers .xml (italc)
    Bonjour.(Je suis débutant)

    je souhaite mettre en place le logiciel (italc) pour un établissement scolaire en me simplifiant quelques étapes du fait d'un grand nombre de poste.

    Problématiques: a partir du fichier .txt créer par le logiciel dipiscan; convertir celui-ci au format .xml avec les balises requise pour italc pour ne pas avoir a rentré a la main a travers la gui toutes les infos des postes (ip, mac, nom..)

    Donc voici un extrait du fichier scan.txt de dipiscan:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    192.168.1.12	1 ms		Pc test		NomDeDomaine	B8-AC-6F-B9-75-45
    Et ici un autre extrait GlobalConfig.xml de italc avec les données ecrite a la main a travers l'interface graphique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <!DOCTYPE italc-config-file>
    <globalclientconfig version="2.0.2">
      <body>
        <classroom name="salle test">
          <client hostname="192.168.1.12" mac="B8:AC:6F:B9:75:45" type="0" id="1313" name="Pc test"/>
        </classroom>
      </body>
    </globalclientconfig>
    La question:

    Comment extraire les infos du .txt et les mettres en formes en .xml tout en remplaçant certain caractère comme l'adresse mac(*-*).

    J'ai entendue parler de parser et bien d'autre chose mais c'est assez flou.
    Pouvez vous m’éclairer sur le sujet et les possibilitées !

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien réseaux télécom
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseaux télécom
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 82
    Points
    82
    Par défaut Merci dipisoft!
    Re:
    Bon voici la solution du créateur du soft qui m'a répondu en deux temps trois mouvement avec le script en plus .

    Donc la soluce c'est ça:
    créer un fichier avec ce nom et cette extension: Export2Xml.vbs
    et y coller ceci dedans:

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    Option Explicit
     
    Const ForReading = 1
    Dim objFSO, objFichierEntree, objFichierSortie
    Dim strSeparateur, strLigne, strSection
    Dim arrMachine
    Dim intColHost, intColName, intColMac, intId, intR
    Dim boolIni
     
    If WScript.Arguments.Count = 0 Or WScript.Arguments.Count > 1 then
        Msgbox "Paramètre manquant : faire glisser un et un seul fichier à traiter sur le script.", vbExclamation, WScript.ScriptName
        WScript.Quit
    End If
     
    boolIni = (Right(LCase(WScript.Arguments(0)), 4) = ".ini")
     
    If boolIni = True Then
        strSeparateur = "|"
        intColHost = 1
        intColName = 0
        intColMac = 4
     
    Else
        strSeparateur = vbTab
     
        intR = Msgbox("S'agit-il d'un export de Dipiscan (oui) ou d'IPScan32 (non), ou ni l'un ni l'autre (annuler)", vbQuestion or vbYesNoCancel, WScript.ScriptName)
     
        Select Case intR
        Case vbYes:
            intColHost = 0
            intColName = 2
            intColMac = 6       
     
        Case vbNo:   
            intColHost = 0
            intColName = 1
            intColMac = 5   
     
        Case Else:
            Msgbox "Format non supporté", vbExclamation, WScript.ScriptName
            WScript.Quit
        End Select
     
    End If
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFichierEntree = objFSO.OpenTextFile(WScript.Arguments(0), ForReading)
    Set objFichierSortie = objFSO.CreateTextFile(WScript.Arguments(0) & ".xml")
     
    Call Ecris("<?xml version=""1.0""?>\r\n", null)
    Call Ecris("<!DOCTYPE italc-config-file>\r\n", null)
    Call Ecris("<globalclientconfig version=""2.0.2"">\r\n", null)
    Call Ecris("\t<body>\r\n", null)
     
    intId = 1
     
    While not(objFichierEntree.AtEndOfStream)
        strLigne = Trim(objFichierEntree.ReadLine)
     
        If boolIni = True Then
            If Left(strLigne, 1) = "[" And Right(strLigne, 1) = "]" And LCase(strLigne) <> "[config]" Then
                If strSection <> "" Then
                    Call Ecris("\t\t</classroom>\r\n", null)
                End If
     
                strSection = Replace(Replace(Trim(strLigne), "[", ""), "]", "")
     
                Call Ecris("\t\t<classroom name=""%v"">\r\n", Array(strSection))
     
            ElseIf strSection <> "" And Left(strLigne, 7) = "Machine" Then
                arrMachine = Split(Split(Trim(strLigne), "=")(1), strSeparateur)
     
                Call Ecris("\t\t\t<client hostname=""%v"" mac=""%v"" type=""0"" id=""%v"" name=""%v""/>\r\n", Array(arrMachine(intColHost), Replace(arrMachine(intColMac), "-", ":"), intId, arrMachine(intColName)))
     
                intId = intId + 1
            End If
     
        Else
            If strSection = "" Then
                strSection = Mid(WScript.Arguments(0), Instr(WScript.Arguments(0), "\") + 1)
     
                Call Ecris("\t\t<classroom name=""%v"">\r\n", Array(strSection))
     
            ElseIf Left(strLigne, 1) <> "[" Then
                arrMachine = Split(Trim(strLigne), strSeparateur)
     
                Call Ecris("\t\t\t<client hostname=""%v"" mac=""%v"" type=""0"" id=""%v"" name=""%v""/>\r\n", Array(arrMachine(intColHost), Replace(arrMachine(intColMac), "-", ":"), intId, arrMachine(intColName)))
     
                intId = intId + 1
            End If
        End If
    Wend
     
    Call Ecris("\t\t</classroom>\r\n", null)
    Call Ecris("\t</body>\r\n", null)
    Call Ecris("</globalclientconfig>\r\n", null)
     
    objFichierSortie.Close
    objFichierEntree.Close
     
    Msgbox "Traitement terminé.", vbInformation, Wscript.ScriptName
     
    WScript.Quit
     
    Sub Ecris(byval chaine, byval valeurs)
        Dim p, i
     
        p = Instr(chaine, "%v")
        i = 0
        While p > 0
            chaine = Left(chaine, p - 1) & valeurs(i) & Mid(chaine, p + 2)
            p = Instr(chaine, "%v")
     
            i = i + 1
        Wend
     
        chaine = Replace(chaine, "\t", vbTab)
        chaine = Replace(chaine, "\r", vbCr)
        chaine = Replace(chaine, "\n", vbLf)
     
        objFichierSortie.Write(chaine)
    End Sub
    Après ça il y a plus que a faire glisser le (fichier.txt) de l'export de dipiscan et renommer le fichier en question en (GlobalConfig.xml) et de placer dans le dossier qu'il lui correspond comme renseigné dans le path de italc.
    Il faut juste faire attention au nom de la salle qui doit être renommer et sinon pour ceux qui connaissent le language (.vbs) faudra l'adapter afin d'avoir le bon nom de sortie.

    Un grand merci a Damien.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Edit : ce message fut posté quelques secondes après celui du dessus

    Ben déjà ce n'est pas en regardant une seule donnée que tu vas trouver des choses. Il en faut au moins deux, et puis, toutes les machines seront dans la même salle, pour le fichier GlobalConfig.xml ?

    Ensuite tu vas sans doute devoir utiliser un langage de programmation, pour :
    - lire le fichier .txt, d'une part,
    - faire la conversion,
    - écrire le fichier .xml d'autre part.

    Donc il va falloir nous dire quels genres de langages tu sais utiliser.

    Embêtement supplémentaire : si le fichier GlobalConfig.xml ressemble vraiment à ce que tu dis, alors ce n'est pas un vrai fichier xml. Dans un fichier xml le DOCTYPE doit indiquer le nom de la balise racine du xml, et là italc-config-file et globalclientconfig c'est pas le même nom, alors ça ne va pas. Beaucoup d'outils xml refuseront de générer un tel fichier, alors ça va être compliqué.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien réseaux télécom
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseaux télécom
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 82
    Points
    82
    Par défaut
    Et bien je ne connais aucun langage de programmation.
    J'ai toujours bloqué sur le pour faire quoi et quel projet,....
    Aujourd’hui je réalise que cela va devenir a la limite urgent dans connaitre au moins un; mais lequel et assez flexible et adapté pour un technicien/administrateur réseau?

    Peut tu m'eclairer.?

    J'ai essayer l'ide eclipse pour java et je me suis arraché les cheveux pour essayer de suivre le tuto ici: http://cynober.developpez.com/tutoriel/java/xml/jdom/ que j'ai du abandonné car je n'arrive pas a executer le code

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par anje84 Voir le message
    Et bien je ne connais aucun langage de programmation.
    Oui bon en l'occurrence l'auteur d'un de tes programmes a été assez sympa pour le faire à ta place et te filer le résultat, donc bon, ça pourra attendre la prochaine fois.

    Citation Envoyé par anje84 Voir le message
    J'ai toujours bloqué sur le pour faire quoi et quel projet,....
    Aujourd’hui je réalise que cela va devenir a la limite urgent dans connaitre au moins un; mais lequel et assez flexible et adapté pour un technicien/administrateur réseau?

    Peut tu m'eclairer.?
    Hmm. Moi dans le monde Unix j'ai surtout profité de Perl et d'un langage de script shell.
    D'ailleurs au passage cette conversion j'aurais pu la faire en shell bash, et il me semble qu'un sysadmin ferait mieux d'en être capable aussi -_-°. C'est pas tant un langage de programmation qu'une technique d'automatisation, mais en tout cas, il y a souvent besoin.

    Dans le monde Windows... Bon ben je le connais pas à vrai dire. Il semble que nous venons d'avoir une démonstration du fait que connaître VBScript, ça peut servir. J'aurais plutôt pensé à PowerShell pour être honnête, mais bon, je connais pas tellement Windows.

    Citation Envoyé par anje84 Voir le message
    J'ai essayer l'ide eclipse pour java et je me suis arraché les cheveux pour essayer de suivre le tuto ici: http://cynober.developpez.com/tutoriel/java/xml/jdom/ que j'ai du abandonné car je n'arrive pas a executer le code
    Ah ben oui, oui, il vaut mieux commencer par apprendre le début de Java, puis Eclipse, puis XML, et après on pourra envisager JDOM -_-°. La programmation c'est du Lego, hein, on construit pas une voiture tant qu'on a pas compris comment empiler les briques.

    Enfin sois pas déçu, comme je te l'ai déjà dit, le fichier à produire n'était pas du vrai XML. JDOM aurait refusé de te créer ça, c'était pas la peine d'essayer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Relation récursive pour exporter vers XML
    Par bossun dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/08/2005, 14h17
  2. [débutant]XML vers XML avec XSL
    Par tokamak dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/07/2005, 10h27
  3. XML vers XML avec XSL
    Par guizz79 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 09h43
  4. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 12h54

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