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

Linux Discussion :

[Shell] Modifications d'un fichier XML


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 28
    Points
    28
    Par défaut [Shell] Modifications d'un fichier XML
    Bonjour à tous.

    Je souhaite modifier certaines valeurs dans le fichier npc_templates.xml. (Fichier Joint)

    1ere étape, localiser l'id: 207583
    A l'origine, cette ligne est comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <npc_template npc_id="207583" level="41" name="senior soldier" name_id="312802" npc_type="NON_ATTACKABLE" height="1.2" title_id="314342" rank="ELITE" race="ASMODIANS" tribe="GUARD_DARK" srange="10" arange="2" arank="1000" hpgauge="14">
            <stats maxMp="47095" maxHp="156982" maxXp="502342" block="85" parry="85" mdef="85" pdef="85" crit="85" power="85" evasion="85" accuracy="85" magic_accuracy="85" walk_speed="1.3" run_speed="6.0" run_speed_fight="8.0" fly_speed="0.0"/>

    2eme étapes, la modification de 4 valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <npc_template npc_id="207583" level="41" name="senior soldier" name_id="312802" npc_type="NON_ATTACKABLE" height="1.2" title_id="314342" rank="ELITE" race="ASMODIANS" tribe="GUARD_DARK" srange="10" arange="2" arank="1000" hpgauge="14">
            <stats maxMp="47095" maxHp="156982" maxXp="502342" block="85" parry="85" mdef="85" pdef="85" crit="85" power="5000" evasion="85" accuracy="85" magic_accuracy="85" walk_speed="12.0" run_speed="12.0" run_speed_fight="12.0" fly_speed="0.0"/>
    J'ai mis à disposition le fichier XML, mais bien entendu je l'ai réduis. (Fichier de 12Mo à l'origine)
    Je précise que cette manipulation va être faite une 50ene de fois, d'où l'utilité d'automatisater ces changements dans un script.

    Mon problème est le suivant: J'ai essayé d'utilisé Grep, Awk, Cut, Sed, rien n'y fait je n'arrive pas à trouver la solution.
    Pouvez-vous m'y aider ?

    Un exemple de mon dernier test avec Sed (Qui ne fonctionne pas ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
     
     
    cp npc_templates.xml npc_templates.xml_ORIG
    sed -e "s/<npc_template npc_id=\"207583\" level=\"41\" name=\"senior soldier\" name_id=\"312802\" npc_type=\"NON_ATTACKABLE\" height=\"1.2\" title_id=\"314342\" rank=\"ELITE\" race=\"ASMODIANS\" tribe=\"GUARD_DARK\" srange=\"10\" arange=\"2\" arank=\"1000\" hpgauge=\"14\">\[ *]\<stats maxMp=\"47095\" maxHp=\"156982\" maxXp=\"502342\" block=\"85\" parry=\"85\" mdef=\"85\" pdef=\"85\" crit=\"85\" power=\"85\" evasion=\"85\" accuracy=\"85\" magic_accuracy=\"85\" walk_speed=\"1.3\" run_speed=\"6.0\" run_speed_fight=\"8.0\" fly_speed=\"0.0\"\/>/<npc_template npc_id=\"207583\" level=\"41\" name=\"senior soldier\" name_id=\"312802\" npc_type=\"NON_ATTACKABLE\" height=\"1.2\" title_id=\"314342\" rank=\"ELITE\" race=\"ASMODIANS\" tribe=\"GUARD_DARK\" srange=\"10\" arange=\"2\" arank=\"1000\" hpgauge=\"14\">\[ *]\<stats maxMp=\"47095\" maxHp=\"156982\" maxXp=\"502342\" block=\"85\" parry=\"85\" mdef=\"85\" pdef=\"85\" crit=\"85\" power=\"9999\" evasion=\"85\" accuracy=\"85\" magic_accuracy=\"85\" walk_speed=\"13.0\" run_speed=\"13.0\" run_speed_fight=\"13.0\" fly_speed=\"0.0\"\/>/g" npc_templates.xml_ORIG > npc_templates.xml
    Par avance, merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Bonjou Nissartis,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sed '/npc="207583"/N;\
    s/\(.*\)power="[^"]*"\(.*\)/\1power="5000"\2/;\
    s/\(.*\)walk_speed="[^"]*"\(.*\)/\1walk_speed="12.0"\2/;\
    s/\(.*\)run_speed="[^"]*"\(.*\)/\1run_speed="12.0"\2/;\
    s/\(.*\)run_speed_fight="[^"]*"\(.*\)/\1run_speed_fight="12.0"\2/' npc_templates.xml
    ...
    ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    N_BaH Bonjour,
    Avant tout, merci pour ton post

    Je vais l'essayer de suite, et je fais un retour au plus vite.

    Pourrais tu m'expliquer 3 petites choses :
    - /N;
    - \2
    -[^"]*

    Je te remercie !

    ___________________________________
    EDIT: Petite erreur de ma part ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
     
    cp npc_templates.xml npc_templates.xml_ORIG
    sed -e '/npc="207583"/N;\
    s/\(.*\)power="[^"]*"\(.*\)/\1power="5000"\2/;\
    s/\(.*\)walk_speed="[^"]*"\(.*\)/\1walk_speed="12.0"\2/;\
    s/\(.*\)run_speed="[^"]*"\(.*\)/\1run_speed="12.0"\2/;\
    s/\(.*\)run_speed_fight="[^"]*"\(.*\)/\1run_speed_fight="12.0"\2/' npc_templates.xml
    Résultat :
    sed: -e expression n°1, caractère 245: expression régulière d'adresse inachevée

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Non, c'est moi. J'ai ajouté des \ à la fin des lignes pour que ça reste lisible, mais c'est inutile. Tu peux les virer.

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

Discussions similaires

  1. modification d'un fichier xml
    Par DanielW33 dans le forum ANT
    Réponses: 1
    Dernier message: 09/10/2006, 17h38
  2. [DOM XML] Modification d'un fichier XML en php
    Par aldo-tlse dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/07/2006, 19h28
  3. [xml/xsl/xhtml] modification d'un fichier XML
    Par florent_de_brest dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/05/2006, 21h43
  4. [c#] Modification d'un fichier XML
    Par topolino dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/03/2006, 15h51
  5. [DOM] Modification d'un fichier XML
    Par nana1 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 22/11/2005, 00h22

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