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 XML : récupération attribut


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut Shell XML : récupération attribut
    Bonjour,

    Je souhaite récupérer la valeur d'un attribut dans un élément (je connais le nom des 2) dans un fichier XML. Je ne trouve rien qui permette de la faire en shell. Avez vous des idées ?

    Merci de votre aide !
    WwAvE

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    A ma connaissance, y a rien de spécial dans les commandes standard Unix :
    - soit tu fais un script shell avec du sed dans tous les sens pour récupérer l'attribut, en partant du principe que ton fichier XML a toujours la même tête, sauts de ligne inclus
    - soit tu as à ta disposition un langage de programmation évolué façon PHP ou Perl qui peut faire du parse XML, et dans ce cas tu écris un script Perl ou PHP qui fait le boulot. Mais il faut que ton serveur te propose un tel langage.

  3. #3
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Exemple d'utilisation de xmllint pour la récupération de l'attribut arg1 de l'élément Docu

    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
    $ xmllint --shell flux.xml < xpath.cmd | sed -n -e '/arg1/s/^.*="//' -e 's/"$//p'
    val10
    val20
    
    $ less flux.xml<?xml version="1.0"?>
    <xml>
    <Content>
            <Docu arg1="val10" arg2="val11">
            <Corps> test 10 </Corps>
            </Docu>
    </Content>
    <Content>
            <Docu arg1="val20" arg2="val21">
            <Corps> test 20</Corps>
            </Docu>
    </Content>
    </xml>
    
    
    $ less xpath.cmd
    cat //Docu/@arg1
    bye

    Solution assez basique mais qui devrait convenir

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 80
    Par défaut
    Moi aussi j'ai utilisé xmllint et ça marche très bien, elle permet une utilisation interactive d'un fichier xml, et le parcourire comme un système de fichier, en plus on peut utiliser les requetes XPath .

Discussions similaires

  1. [D6 => XML] Récupération de données avec une boucle.
    Par Bason_sensei dans le forum Delphi
    Réponses: 1
    Dernier message: 23/05/2006, 13h50
  2. [D6 => XML] Récupération de données dans une balise
    Par Bason_sensei dans le forum Delphi
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  3. [XML]Récupération d'un noeud via son id
    Par zegone dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/02/2006, 14h38
  4. [XSLT] XML->XML conversion attributs en balises
    Par ¤ Actarus ¤ dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/07/2005, 09h51
  5. xhtml ->xml xsl:attribute name+not valid
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 14/06/2005, 07h27

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