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 :

Récupérer les valeurs d'un fichier xml avec xmllint.


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Août 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 25
    Par défaut Récupérer les valeurs d'un fichier xml avec xmllint.
    Bonjour,

    Supposons que mon fichier test.xml soit de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <root>
            <Balise1>txt1</Balise1>
            <Balise2>
                    <ssBalise2_1>txt2</ssBalise2_1>
                    <ssBalise2_2>
                                    <ssBalise2_2_1>txt3</ssBalise2_2_1>
                                    <ssBalise2_2_2>txt4</ssBalise2_2_2>
                    </ssBalise2_2>
            </Balise2>
    </root>
    En utilisant xmllint --shell test.xml, il arrive bien dans le shell du xmllint et l'on peut naviguer dans le fichier.
    Jusque là, tout va bien.

    Ma question est toute simple : comment récupérer la valeur txt3 et txt4 en utilisant xmllint en ligne de commande sans le shell du xmllint ?
    Le principe est que je dois créer des scripts qui vont lire des fichiers xml et forcément, je ne peux pas avoir une interaction avec l'utilisateur.
    Il faut donc dans une ligne de commande, récupérer les valeurs que je souhaite pour pouvoir les utiliser après dans une variable dans mon script.

    D'avance, merci pour vos réponses !
    Bonne journée à tous !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Bonjour,

    mais que tapes-tu une fois dans le shell xmllint ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Août 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 25
    Par défaut
    Bonjour,

    J'utilise un cd pour arriver dans le noeud souhaité et ensuite, je fais un ls qui me donne la valeur que je souhaite avoir.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par gabydebur Voir le message
    J'utilise un cd pour arriver dans le noeud souhaité et ensuite, je fais un ls qui me donne la valeur que je souhaite avoir.
    en deux invocations distinctes ça peut se faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ xmllint --xpath '//root/Balise2/ssBalise2_2/ssBalise2_2_1/text()' fichier
    txt3
    $ xmllint --xpath '//root/Balise2/ssBalise2_2/ssBalise2_2_2/text()' fichier
    txt4
    en une seule invocation en revanche j'ai pas mieux que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmllint --xpath '//root/Balise2/ssBalise2_2/*' fichier | awk -F'[<>]' '{print $3 "\n" $7}'

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Août 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 25
    Par défaut
    Bonjour,

    Merci pour ta réposne qui serait pour moi nickel !
    Malheureusement, je n'arrive pas à utiliser l'option --xpath. L'erreur remontée est :
    Manquerait-il un package ? et si oui lequel ?
    Si non, pour quelles raisons je ne peux pas utiliser xpath ?

    Merci pour tout !

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    il semblerait que certains (beaucoup) de clients ne supportent pas l'option --xpath, dommage

    une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xmllint --shell fichier <<EOF | awk 'NR == 3 || NR == 5'
    cat //root/Balise2/ssBalise2_2/*/text()
    EOF
    (on pourra aussi remplacer le awk par awk '!/^ ---|^\/ >/')

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

Discussions similaires

  1. [DOM] Récupérer les attributs d'un fichier XML en XPATH AVEC DOM
    Par jean22 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 26/06/2013, 16h02
  2. [XML] Récupérer les données d'un fichier XML sur URL avec php
    Par ValooWart dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 01/03/2013, 16h40
  3. Réponses: 3
    Dernier message: 14/03/2007, 15h30
  4. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  5. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39

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