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 :

Script xml remplacer un grand nombre de données dans tout le fichier


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Script xml remplacer un grand nombre de données dans tout le fichier
    Bonjour a tous, je fait appel a vous car je n'arrive pas a faire ce que je veut avec un fichier .xml, je m'explique. Je possède un fichier .xml de 28mo environ (480 335 lignes) il met du texte qui sensiblement se répète, voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <string>
        <id>352028</id>
        <name>STR_NPC_LF3_Ghost_Q1628</name>
        <body>Weeping Ghost</body>
      </string>
    J'ai ceci environ 100 000 fois, je souhaite faire un script qui permettrai de copier la valeur qui se trouve dans <id> </id> et de la mettre à la place de ce qui se trouve dans la balise body. Et donc obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <string>
        <id>352028</id>
        <name>STR_NPC_LF3_Ghost_Q1628</name>
        <body>352028</body>
      </string>
    Étant donné qu'il y a un grand nombre de "mot" a remplacer, je faire manuellement serait beaucoup trop long. Dans ce fichier il n'existe que les balise écrite ci-dessus et les balises: <strings> </strings> qui se situe au début et a la fin du fichier, c'est pas grave si elle sont "mangé" lors de la conversion. Si remettre la valeur de id dans body est trop compliqué, on peut mettre un chiffre, par exemple pour la première balise id mettre 1, mettre 2 pour la 2eme et ainsi de suite.Je ne connait pas grand chose en script xml, en script, je ne connait que le ruby (et encore, ça fait longtemps que je n'y ai pas touché). Après il faut encore que je rajoute 2 ou 3 lettre entre le <body> et le nombre qui suit mais un petit rechercher, remplacer fera l'affaire car il sera toujours le même, comme je possède plusieurs fichiers qui ont le même arbre de construction, j'ai pas envi de tous mélanger^^
    J'espère recevoir une réponse positive, c'est pour traduire un jeu, ce fichier pourrait m'aider a faire la partie debug de la traduction, car y a déjà des bugs d'affichage de texte, il est trop long :/ car le français prend plus de place que le chinois où l'anglais^^
    Sur-ce, bonne journée, j'espère avoir été assé clair, si il faut, hésité pas a poser des questions
    PS: J'ai posté ici car mon fichier est en xml, je sais pas si fallait le faire ici, au pire, les gentil administrateurs déplaceront ce post. J'allais oublier de vous dire que pour ouvrir ce fichier j'utilise pspad, le bloc note de windaube prend plus de 15min pour me l'ouvrir et autant pour modifier un caractère...
    Edit: j'ai fait des recherches sur google mais sans résultat, je ne sais pas trop quoi mettre dans "le grand rectangle blanc"

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Points : 168
    Points
    168
    Billets dans le blog
    1
    Par défaut
    Bonjour Percival,

    Si tu travailles sous windaube, tu pourrais utiliser word et, au moyen de quelques lignes en VBA, faire les modifs souhaitées.

    Il "suffirait" de rechercher chaque occurrence de "<id>" puis de "mémoriser" la valeur qui le suit.
    Ensuite, chercher l'occurrence "<body>" et de remplacer la chaîne qui se trouve juste après par le nombre mémorisé.

    Répéter cette manœuvre pour chaque occurrence de "<id>" dans tout le document.

    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Bonjour, merci de ta réponse mais... Je travaille bien sur windaube (le vista) mais j'ai quand même un xp et un windaube 7 mais aussi un ubuntu un peu près fonctionnel, je l'avait installé a partir de windaube et a cause de mon petit disque dur, j'avais copié le fichier sur mon disque dur externe mais j'ai eu des prob pour le transféré enfin bref. Je possède aussi un version de office word 2007. Etant nul en programmation, je me demandai si tu pouvait m'aider pour faire ce fameux fichier VBA car moi et ben j'y connait rien et apprendre ce langage juste pour un script, ça fait long donc si tu pouvait m'aider a le faire ou le faire, ca serait sympa de ta part

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Si ton fichier est ainsi structuré, tu peux écrire quelques lignes dans n'importe quel langage (dont Ruby...) qui lit le fichier ligne à ligne et modifie le body en fonction de ce qui aura été lu dans le id. Cela me semble la solution la plus rapide.
    Ou bien une transformation XSLT, mais dans ton cas je ne suis pas persuadé que ce soit la solution la meilleure (et la plus rapide).

    Une piste en vbs (à enregistrer sous cette extension et exécuter, attention au format, ici ISO-8859-1):

    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
    dim fso, soureFile,destfile, id, posD, posF
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFile = FSO.OpenTextFile("Source.xml",1)
    Set DestFile = FSO.CreateTextFile("dest.xml", true)
    
    id=""
    do while Not SourceFile.AtEndOfStream
         'on lit une ligne
         ligne = SourceFile.Readline()
         'si la ligne contient un BODY, et qu'un précédent id a été enregistré
         if (instr(ligne,"<body>")>0 and id<>"") then
             'on refait la ligne...
             ligne = "<body>" & id & "</body>"
             'on réinitialise l'id
             id=""
         'si on est sur un ID
         elseif (instr(ligne,"<id>")>0) then
             posD=instr(ligne,"<id>")+4
             posF= instr(ligne,"</id>")
             'on stocke l'ID
             id = mid(ligne,posD, posF - posD-1)
         end if
         'finalement on écrit la ligne
         'soit celle du BODY modifié, soit une simple copie
         DestFile.WriteLine(ligne)
    loop
    DestFile.close
    SourceFile.close
    Set DestFile = Nothing
    Set SourceFile = Nothing
    Set FSO = Nothing
    End Sub
    ERE

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton script, j'ai compris comment l'utiliser mais je ne parvient pas a l'enregistrer correctement, le bon vieux bloc-note connait pas ce langage et Pspad connait le ISO-8859-2 mais pas le ISO-8859-1. Quel programme doit je utiliser? j'ai fait un peu de recherche mais vu l'heure, j'ai laissé tomber, je chercherai demain, j'éditerai mon message si besoin est. sur ce, bonne nuit^^

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    Citation Envoyé par Percival Voir le message
    Merci pour ton script, j'ai compris comment l'utiliser mais je ne parvient pas a l'enregistrer correctement, le bon vieux bloc-note connait pas ce langage et Pspad connait le ISO-8859-2 mais pas le ISO-8859-1. Quel programme doit je utiliser? j'ai fait un peu de recherche mais vu l'heure, j'ai laissé tomber, je chercherai demain, j'éditerai mon message si besoin est. sur ce, bonne nuit^^
    Tu l'enregistres directement depuis le bloc-notes ou pspad, par exemple sous le nom traitement.vbs. L'aspect encodage, on verra si plus tard selon le fait que tu rencontres ou pas un problème

    Enfin pour tester, il suffit de double cliquer sur le VBS.

    Je viens de tester le code: celui-ci est ok, légèrement corrigé:
    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
    dim fso, soureFile,destfile, id, posD, posF
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFile = FSO.OpenTextFile("Source.xml",1)
    Set DestFile = FSO.CreateTextFile("dest.xml", true)
     
    id=""
    do while Not SourceFile.AtEndOfStream
         'on lit une ligne
         ligne = SourceFile.Readline()
         'si la ligne contient un BODY, et qu'un précédent id a été enregistré
         if (instr(ligne,"<body>")>0 and id<>"") then
             'on refait la ligne...
             ligne = "<body>" & id & "</body>"
             'on réinitialise l'id
             id=""
         'si on est sur un ID
         elseif (instr(ligne,"<id>")>0) then
             posD=instr(ligne,"<id>")+4
             posF= instr(ligne,"</id>")
             'on stocke l'ID
             id = mid(ligne,posD, posF - posD)
         end if
         'finalement on écrit la ligne
         'soit celle du BODY modifié, soit une simple copie
         DestFile.WriteLine(ligne)
    loop
    DestFile.close
    SourceFile.close
    Set DestFile = Nothing
    Set SourceFile = Nothing
    Set FSO = Nothing
    ERE

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    oui c'est ce que j'avais fait, depuis que j'ai retiré la dernière ligne, je n'obtient plus la même erreur, voici celle que j' obtient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Script: C:\User\.....\Nouveau4.vbs
    Ligne: 25
    Caract.: 6
    Erreur: Argument ou apel de procédure incorrect
    Code: 800A0005
    Source: Erreur d'exécution Microsoft VBScript

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Désolé, entre temps j'ai changé quasi 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
    25
    26
    27
    28
    29
    30
    31
    dim fso, soureFile,destfile, id, posD, posF
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFile = FSO.OpenTextFile("Source.xml",1)
    Set DestFile = FSO.CreateTextFile("dest.xml", true)
     
    id=""
    do while Not SourceFile.AtEndOfStream
         'on lit une ligne
         ligne = SourceFile.Readline()
         'si la ligne contient un BODY, et qu'un précédent id a été enregistré
         if (instr(ligne,"<body>")>0 and id<>"") then
             'on refait la ligne...
             ligne = "<body>" & id & "</body>"
             'on réinitialise l'id
             id=""
         'si on est sur un ID
         elseif (instr(ligne,"<id>")>0) then
             posD=instr(ligne,"<id>")+4
             posF= instr(ligne,"</id>")
             'on stocke l'ID
             id = mid(ligne,posD, posF - posD)
         end if
         'finalement on écrit la ligne
         'soit celle du BODY modifié, soit une simple copie
         DestFile.WriteLine(ligne)
    loop
    DestFile.close
    SourceFile.close
    Set DestFile = Nothing
    Set SourceFile = Nothing
    Set FSO = Nothing
    Cela risque encore de planter, mais ce n'est pas grave.

    Quel OS utilises tu ? Peux tu me zipper un fichier XML ?

    ERE

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    J'obtient la même erreur, mais il me crée quand même un fichier mais il est beaucoup plus petit et n'affiche que des bêtises:
    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
    <?xml version="1.0" encoding="utf-16"?>
    ਍㰀猀琀爀椀渀最开琀椀瀀猀㸀ഀഀ
      <string_tip>
    ਍    㰀椀搀㸀㤀㈀   ㄀㰀⼀椀搀㸀ഀഀ
        <name>STR_TIP_BASIC001</name>
    ਍    㰀戀漀搀礀㸀䄀猀琀甀挀攀㨀 쨀琀爀攀 戀愀琀琀甀 瀀愀爀 甀渀 瀀攀爀猀漀渀渀愀最攀 搀攀 氀愀 爀愀挀攀 漀瀀瀀漀猀 攀渀 倀瘀倀 渀攀 瘀漀甀猀 挀愀甀猀攀爀愀 瀀愀猀 搀攀 瀀攀爀搀爀攀 搀✀䔀堀倀⸀㰀⼀戀漀搀礀㸀ഀഀ
        <rank>1</rank>
    ਍  㰀⼀猀琀爀椀渀最开琀椀瀀㸀ഀഀ
      <string_tip>
    ਍    㰀椀搀㸀㤀㈀   ㈀㰀⼀椀搀㸀ഀഀ
        <name>STR_TIP_BASIC002</name>
    ਍    㰀戀漀搀礀㸀䄀猀琀甀挀攀㨀 쨀琀爀攀 戀愀琀琀甀 瀀愀爀 甀渀 瀀攀爀猀漀渀渀愀最攀 搀攀 氀愀 爀愀挀攀 漀瀀瀀漀猀 攀渀 倀瘀倀 瘀漀甀猀 挀愀甀猀攀爀愀 甀渀攀 瀀攀爀搀爀攀 搀攀 倀漀椀渀琀 搀✀䄀戀礀猀猀⸀㰀⼀戀漀搀礀㸀ഀഀ
        <rank>1</rank>
    ਍  㰀⼀猀琀爀椀渀最开琀椀瀀㸀ഀഀ
      <string_tip>
    ਍    㰀椀搀㸀㤀㈀   ㌀㰀⼀椀搀㸀ഀഀ
        <name>STR_TIP_BASIC003</name>
    Voici le fichier:
    http://www.toofiles.com/fr/oip/docum...table_tip.html
    c'est le plus petit des fichiers, les autres sont presque identique, il n'ont pas la balise rank et ont quelques autres balises entre le ID et le body

    EDIT: j'utilise vista mais si besoin je peut passer sous xp ou windaube 7

  10. #10
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Ok, je comprends mieux... UTF-16, ça c'est du lourd sachant qu'on a du mal à passer à UTF-8

    Dans l'ordre des choses:
    1. tu charges ton fichier xml UTF-16 dans PSPAD
    2. une fois chargé tu le convertis en latin: menu Format/Iso-8859-2
    3. tu sauvegardes ( enregistrez sous... )
    4. tu lance le vbs en mettant bien comme source le nouveau xml
    5. si besoin tu charges le résultat que tu convertis en UTF-16


    ERE

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Parfait ca marche, merci il me reste plu qu'a remettre tous les fichier. ce fichier me servir de "debug" pour mon patch.

    Une question hors sujet aussi, j'ai crée un fichier .bat qui une fois exécuté supprime l'ancien patch et instal le nouveau, je cherche une fonction pour supprimer le fichier.bat a la fin de son exécution, j'ai essayé
    del instal.bat
    mais cela ne marche pas, je pense que c'est parce-que il est en exécution, j'avais pensé que le .bat pouvait créer un autre .bat dans un dossier temp pour qu'il supprime le premier mais je ne sais pas comment le 2eme fichier .bat va trouver où se trouve le premier...

    EDit: le UTF-16, je pense que c'est que le jeu était en chinois pour traduit en anglais.

  12. #12
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par Percival Voir le message
    Parfait ca marche, merci il me reste plu qu'a remettre tous les fichier. ce fichier me servir de "debug" pour mon patch.

    Une question hors sujet aussi, j'ai crée un fichier .bat qui une fois exécuté supprime l'ancien patch et instal le nouveau, je cherche une fonction pour supprimer le fichier.bat a la fin de son exécution, j'ai essayé
    del instal.bat
    mais cela ne marche pas, je pense que c'est parce-que il est en exécution, j'avais pensé que le .bat pouvait créer un autre .bat dans un dossier temp pour qu'il supprime le premier mais je ne sais pas comment le 2eme fichier .bat va trouver où se trouve le premier...

    EDit: le UTF-16, je pense que c'est que le jeu était en chinois pour traduit en anglais.
    Là je n'ai aucune idée ; il faudrait plutôt poser la question dans un forum plus orienté système.

    Bon dev,

    ERE

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Et tous les fichier que je doit traduire était crypté, j'ai trouvé tous ce qu'il faut pour les décrypter mais comme les gaulois, y en a qui résiste encore et toujours, j'ai trouvé sur le net les même fichier décrypté mais pas tous, y avait aucun outil pour les décrypter, j'ai vu qu'il était crypté avec beecrypt (http://sourceforge.net/projects/beecrypt/) mais je n'ai aucune idée de comment cela marche, une idée?

  14. #14
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par Percival Voir le message
    Et tous les fichier que je doit traduire était crypté, j'ai trouvé tous ce qu'il faut pour les décrypter mais comme les gaulois, y en a qui résiste encore et toujours, j'ai trouvé sur le net les même fichier décrypté mais pas tous, y avait aucun outil pour les décrypter, j'ai vu qu'il était crypté avec beecrypt (http://sourceforge.net/projects/beecrypt/) mais je n'ai aucune idée de comment cela marche, une idée?
    Humm !! Tu dois décrypter des fichiers dont tu n'as pas la clé... J'ai l'impression qu'on est un peu borderline là, non ? Désolé mais je ne peux pas plus t'aider.

    ERE

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Arf, je vient de voir que le script ne marche pas partout, je ne sais pas pourquoi, voici avant et après avoir lancé le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Avant:
      <string>
        <id>282218</id>
        <name>STR_SKILL_RA_BreathofNature_G1_DESC</name>
        <body>Increases your [%e1.StatUp.StatName] by [%e1.StatUp.Value] for [%e1.StatUp.RemainTime].
     
    Gains Stigma.</body>
      </string>
    Après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      <string>
        <id>282218</id>
        <name>STR_SKILL_RA_BreathofNature_G1_DESC</name>
    <body>c282218</body>
     
    Gains Stigma.</body>
      </string>

  16. #16
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    C'est parce que le BODY est sur plusieurs lignes... ce qui n'était pas prévu...

    Je vais voir...

    ERE

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    mmm bien vu, j'avais pas vu^^ ca change beaucoup de choses?

  18. #18
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par Percival Voir le message
    mmm bien vu, j'avais pas vu^^ ca change beaucoup de choses?
    Bah, ça change qu'on ne peut pas être sûr que le body soit sur une seul ligne, et qu'il faut donc en tenir compte...
    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
    dim fso, soureFile,destfile, id, posD, posF
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFile = FSO.OpenTextFile("Source.xml",1)
    Set DestFile = FSO.CreateTextFile("dest.xml", true)
    
    id=""
    do while Not SourceFile.AtEndOfStream
         'on lit une ligne
         ligne = SourceFile.Readline()
         'si la ligne contient un BODY, et qu'un précédent id a été enregistré
         if (instr(ligne,"<body>")>0 and id<>"") then
             'on cherche la fin du body (on tinet compte du body réparti sur plusieurs lignes
             do while (instr(ligne,"</body>")=0)
                 ligne = SourceFile.Readline()
             loop
             'on refait la ligne...
             ligne = "<body>" & id & "</body>"
             'on réinitialise l'id
             id=""
         'si on est sur un ID
         elseif (instr(ligne,"<id>")>0) then
             posD=instr(ligne,"<id>")+4
             posF= instr(ligne,"</id>")
             'on stocke l'ID
             id = mid(ligne,posD, posF - posD)
         end if
         'finalement on écrit la ligne
         'soit celle du BODY modifié, soit une simple copie
         DestFile.WriteLine(ligne)
    loop
    DestFile.close
    SourceFile.close
    Set DestFile = Nothing
    Set SourceFile = Nothing
    Set FSO = Nothing
    ERE

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Bon je vient de revérifier, ca marche a 100% merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/04/2012, 14h42
  2. Réponses: 2
    Dernier message: 19/10/2009, 20h51
  3. Envoyer une grande quantité de données dans un xml via http
    Par qdaemon_fr dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 03/03/2009, 09h51
  4. transfert excel d'un grand nombre de données
    Par djerbafr dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2008, 12h05
  5. Réponses: 7
    Dernier message: 20/04/2007, 17h33

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