Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : avril 2010
    Messages : 394
    Points : 1 642
    Points
    1 642

    Par défaut parser fichier xml

    Bonjour,

    Ce que j'aimerais faire, c'est, à partir d'un script .bat, aller récupérer une valeur présente dans un fichier xml. Par exemple, récupérer uniquement "ma valeur" ci-dessous :

    <toto>
    <tata>
    <coucou>ma valeur</coucou>
    <tata>
    <tonton>
    <coucou>une autre valeur</coucou>
    <tonton>
    </toto>

    Connaissant très peu les scripts windows, et n'ayant pas trouvé grand-chose d'utiles lors de mes premières recherches, est-ce que quelqu'un ici pourrait m'aider sur le sujet ?

    Merci.

    Mako.

  2. #2
    Membre Expert
    Inscrit en
    avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 1 495
    Points : 1 988
    Points
    1 988

    Par défaut

    Salut,

    Pour ça utilise la commande findstr associée à for, mais le mieux c'est l'utilitaire sed...

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : avril 2010
    Messages : 394
    Points : 1 642
    Points
    1 642

    Par défaut

    mais le mieux c'est l'utilitaire sed...
    Je ne veux rien avoir à installer sur ma machine, je dois donc faire avec ce qui est nativement présent.

    J'ai regardé la commande findstr, mais je dois avouer galérer pas mal pour réussir à l'utiliser...

    Comme je l'ai noté dans mon exemple précédent, le nom de la balise que je recherche n'est pas unique, il faut que je sache où j'en suis dans le fichier. Ce que je veux faire, c'est donc :

    - on attend de trouver le premier marqueur : "tata" ;
    - si on l'a trouvé, on attend de trouver le second marqueur : "coucou" ;
    - et là, on retourne ce qu'il y a de compris entre les balises <coucou> et </coucou> ;

    Pour le moment, ça ressemble à ça, mais deux points me bloquent :
    - l'utilisation du findstr (et les doc sur lesquelles je suis tombé étaient loin d'être claires) ;
    - les tests pour savoir si on a trouvé la première/seconde balise ;

    Le code (bancal) en question :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    set valeurRecherchee=false
    set trouve=false
    set baliseDebut="<tata>"
    set baliseRecherchee="<coucou>"
    
    for /f "delims=" %%i in (monFichier.xml) do (
      if %trouve%==false (
        if %%i==%baliseDebut% ( // -> ne semble pas fonctionner
          set trouve=true
        )
      )
      if %trouve%==true (
        if %%i==%baliseRecherchee% ( // -> ne semble pas fonctionner
          set valeurRecherchee=%%i // -> là il faudrait le findstr
          goto end
        )
      )
    )
    :end
    En tout cas, merci de m'aider !

    Mako.

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro Sacha
    AMI DU BAT
    Inscrit en
    janvier 2013
    Messages
    599
    Détails du profil
    Informations personnelles :
    Nom : Homme Sacha
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2013
    Messages : 599
    Points : 1 529
    Points
    1 529

    Par défaut

    Salut Mako 5013,

    Tes 2 marqueurs sont sur la même ligne

    style : tutu marqueur1 titi tata toto marqueur2 tete

    ou a des lignes différentes

    tutu
    marqueur1
    titi
    tata
    marqueur2
    tete

    ou encore

    tete tutu maqueur1
    tata titi toto
    tita marqueur2 tata

  5. #5
    Membre Expert
    Avatar de sachadee
    Homme Profil pro Sacha
    AMI DU BAT
    Inscrit en
    janvier 2013
    Messages
    599
    Détails du profil
    Informations personnelles :
    Nom : Homme Sacha
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2013
    Messages : 599
    Points : 1 529
    Points
    1 529

    Par défaut

    Salut mako,

    je 'envoie sur cette discussion ou j'ai écris le code pour une requête similaire
    à la tienne
    http://www.developpez.net/forums/d12...batch-windows/

    Amicalement

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : avril 2010
    Messages : 394
    Points : 1 642
    Points
    1 642

    Par défaut

    Mes marqueurs étaient effectivement à des lignes différentes.

    J'ai testé ce que tu proposais sur l'autre discussion, et après adaptation à mon problème, cela fonctionne nickel.

    Merci beaucoup pour l'aide.

    Mako.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •