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 :

insérer une chaine dans un fichier XML


Sujet :

Linux

  1. #1
    242
    242 est déconnecté
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 11
    Points
    11
    Par défaut insérer une chaine dans un fichier XML
    Bonjour,


    J'ai un fichier contenant :
    <?xml version="1.0"?>
    <DOC xmlnssi="http://www.w3.org/2001/XMLSchema-instance" lang="EN" xsi:noNamespaceSchemaLocation="xx.xsd"><PAG>........</PAG></DOC>

    Je souhaiterais y insérer le contenu d'un autre fichier. Et ce entre le fermant de DOC et la balise <PAG>.

    Note: mon fichier n'est pas formaté en lignes (pretty print XML)


    J'ai bien essayé avec des grep, awk, sed..... mais leur syntaxe est nébuleuse



    merci d'avance

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    INSERT=$(cat fichier_a_insere.txt |tr '\n' '\t' )
    sed -e s,'<PAG>.*<\/PAG>',"<PAG>$INSERT<\PAG>",g -i fichier.xml

  3. #3
    242
    242 est déconnecté
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci pour cette réponse mais

    oui mais non, car mon fichier à inclure contient des caractères parasitant le fonctionnement de sed (le slash par exemple)


    voici ce que j'ai trouvé entre temps:
    copie l'entete xml, meme si celle-ci n'est pas seule sur sa ligne
    cat ${FILE_IN} | sed 5q |sed '/\(.*\)\(<?xml [^>]*?>\)\(.*\)/ s/\(.*\)\(<?xml [^>]*?>\)\(.*\)/\2/g'| sed -n '/<?xml [^>]*>/p' >${sortie}

    idem pour la balise DOC
    cat ${FILE_IN} | sed 5q | sed '/\(.*\)\(<DOC [^>]*>\)\(.*\)/ s/\(.*\)\(<DOC [^>]*>\)\(.*\)/\2/g'|sed -n '/<DOC [^>]*>/p' >>${sortie}

    puis je copie mon contenu de fichier,
    echo ${ficMots} >> ${sortie}

    enfin je copie le reste du fichier en 3 etapes:
    1: insertion d'un saut de ligne entre ma balise DOC et le reste de la ligne
    2. affichage du flux a partir de la balise DOC
    3. affichage de tout sauf la balise DOC
    cat ${FILE_IN} | sed 's/\(<DOC [^>]*>\)\(.*\)/\1\n\2/g'| sed -n '/<DOC [^>]*>/,$p' | sed -n '/<DOC [^>]*>/!p' >>${sortie}

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/01/2010, 17h07
  2. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 21/01/2006, 14h41
  3. [C#][xml][regexp] Recherche d'une regexp dans un fichier xml
    Par LeJocker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/10/2005, 13h29
  4. exporter une BD dans un fichier XML
    Par newsafi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/08/2005, 11h54
  5. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 19h52

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