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

Shell et commandes GNU Discussion :

Recupérer des chaines dans un fichier XML


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut Recupérer des chaines dans un fichier XML
    Bonjour,

    Dans mon sh, je dois parcourir un fichier xml et récupérer le texte qui est contenu uniquement entre une balise particulière.
    ex : <A>1</A><B>2</B><A param=F>3</A> me recupère 13

    Quel est selon vous la meilleur méthode ?
    - parcourir ligne par ligne mon fichier ? (le problème est que je devrais effectuer ce traitement sur plus de 5000 fichiers)
    - sed ? syntaxe ?
    - autres ?

    Merci pour vos conseils et votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    je viens de trouver un post sur le forum d'une personne qui avait quasi la même question avec lui la balise <CITE> et la commande était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -rn '\@<CITE>@{N;s/\n/ /; s/.*<CITE>(.*)<\/CITE>.*/\1/p}'
    Quelqu'un pourrait m'expliquer cette commande pour que je puisse l'adapter car cette fameuse commande sed parait un peu complexe?

  3. #3
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<CITE>coucou</CITE>" | sed -rn 's/.*<CITE>(.*)<\/CITE>.*/\1/p'
    La dernière expression de sed 's/.*<cite>(.*).... permet d'extraire une donnée qui est encadrée par <CITE> et </CITE>

    Dans la commande sed, il passe 2 premières commandes s qui permettent de supprimer je crois les retour chariot

    Dans la dernière celle qui t'interresse le plus, voici son explication:
    commande de substitution
    on cherche <CITE>puis une suite de plusieurs caractères (.*) et enfin on cherche</CITE>.
    Cette suite de caractères est dénommée: \1

    Donc si on trouve l'expression régulière <CITE>quelque chose </CITE> on substitut TOUTE la ligne par \1 c'est à dire le contenu de (.*) c'est à dire coucou dans l'exemple

    ....ouf et....tu as rien compris a mon charabia

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse qui a été très clair pour moi !

    en adaptant à ce que je recherchai ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<A param=F>coucou</A>" | sed -rn 's/.*<A*.*>(.*)<\/A>.*/\1/p'
    qui me retourne coucou

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    par contre si quelqu'un pouvait m'expliquer le début de la commande, ça serait sympa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -rn '\@<CITE>@{N;s/\n/ /; s/.*<CITE>(.*)<\/CITE>.*/\1/p}'
    \@<CITE>@{N;s/\n/ /

    \@<CITE>@{N : ????
    s/\n/ / : remplacement des sauts de ligne par un espace

    Merci par avance

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

Discussions similaires

  1. Des commentaire dans un fichier.xml
    Par Edoxituz dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 22/01/2006, 18h44
  2. rassembler des ressources dans ub fichier xml/html
    Par cbonnard dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 09/01/2006, 17h18
  3. Réponses: 1
    Dernier message: 22/12/2005, 15h45
  4. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51
  5. [debutant] preservation des espace dans un fichier xml
    Par Eric B dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 03/09/2003, 09h43

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