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

Scripts/Batch Discussion :

Changer valeur d'une balise


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Changer valeur d'une balise
    Bonjour,

    J'aimerais dans un fichier .bat pouvoir modifier la valeur d'une balise version contenu dans un fichier xml. Mon problème est que cette balise apparait plusieurs fois dans ce fichier..
    Structure du fichier xml :

    <group>
    <toto>
    <version>0.0</version>
    </toto>
    <tutu>
    <version>0.0</version>
    </tutu>
    ...
    <parent>
    <version>0.0</version>
    </parent>
    </group>

    Je veux modifier uniquement la valeur de la balise <version> contenu dans la <Parent>.

    Merci de votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    J'arrive à récupérer toutes les balises versions mais comment faire pour avoir celle désirée..?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f %%a in (%fichier%) do (
    	for /f "delims=<%baliseVersion%></%baliseVersion%> tokens=2" %%a in ('echo "%%a" ^| Findstr /r "<%baliseVersion%>"') do (
    		echo %%a
    	)
    )
    fichier : variable sur le fichier xml
    baliseVersion : variable égale au nom de la balise cherchée, soit "version"

  3. #3
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    setlocal enabledelayedexpansion
    set "$New_Val=12.00"
    set "$sw=0"
     
    for /f %%a in ('type output.txt') do (
      if !$sw!==1 (
        echo "%%a" | findstr "version" >nul && set $sw=0 & echo ^<version^>%$new_val%^</version^> || echo %%a
    	) else (
    	echo %%a)
    	if "%%a"=="<parent>" set "$sw=1"
    	)
    	pause

    Sortie :


    <group>
    <toto>
    <version>0.0</version>
    </toto>
    <tutu>
    <version>0.0</version>
    </tutu>
    <parent>
    <version>12.00</version>
    </parent>
    </group>
    Pressione qualquer tecla para continuar. . .


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  4. #4
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Merci pour ton aide

    Je comprend la logique de ton code, si je regarde les log il semble bien fonctionner. Cependant que je regarde mes fichiers qui doivent donc être modifié, rien n'a changé ^^.
    Je pensais que le "set" écrasé automatiquement le fichier courant.. visiblement non ?


    Merci.

  5. #5
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    c'est parce que je n'ai pas implementé l'écriture du fichier

    voici le code avec la création du fichier :


    j'ai mis ici fichier.xml

    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
    @echo off
    setlocal enabledelayedexpansion
    set "$New_Val=12.00"
    set "$sw=0"
     
    (for /f %%a in ('type fichier.xml') do (
      if !$sw!==1 (
        echo "%%a" | findstr "version" >nul && set $sw=0 & echo ^<version^>%$new_val%^</version^> || echo %%a
    	) else (
    	echo %%a)
    	if "%%a"=="<parent>" set "$sw=1"
    	)
    )>out.xml
    
    move out.xml fichier.xml
    	pause
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  6. #6
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    hello,

    Hum.. il n'y aurait pas un problème de ")".. Le out.xml est "inatendu" dans les logs..


    Merci

  7. #7
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Merci pour l'update
    En effet c'est beaucoup mieux maintenant

    Par contre.. dans mes fichiers xml il y a des valeurs de balise contenant des espaces, et ton exemple de code semble passer à la ligne suivante quand il arrive sur un espace ou un caractére " " " on dirait..

    Tu serais comment régler ce pbl ?


    Merci

  8. #8
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    salut,

    rajoute juste "delims=" dans le FOR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (for /f "delims=" %%a in ('type fichier.xml') do (.....
    Et voilà

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  9. #9
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Salut

    En effet la c'est mieux (sauf pour les lignes vides, mais je m'en débrouille de ça )!
    Par contre.. ma version n'est plus modifiée..

    Petite précision, mais je ne vois pas en quoi cela changerait le truc, mon fichier est du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    <parent>
       <XXXXX>ZZZZZZ</XXXX>
       <XXXXX>ZZZZzzz</XXXX>
       <version>VersionaModifier</version>
       <XXXXXX>zzzzzzz</XXXX>
    </parent>
    ...

    Merci.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Personne ne sait pourquoi..?

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/06/2014, 18h27
  2. Changer la valeur d'une balise html
    Par fafoula dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/08/2008, 10h17
  3. Changer la valeur d'une balise Xml
    Par djorfe dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 24/04/2008, 10h11
  4. Récuperer la valeur d'une balise html
    Par spynux dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 28/02/2006, 09h40
  5. recupere valeur d'une balise select
    Par naourass dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/11/2005, 10h18

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