Exploitation d'un fichier xml

Exploitation d'un fichier xml - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-11-2012 à 14:35:03    

bonjour :o
Aujourd'hui, c'est quoi le plus simple pour utiliser un fichier xml dans un script shell sans sortir une usine à gaz ?

 

En résumé, j'ai un fichier xml qui est de la sorte :

<blabla>
  <entry>
    <id>id_1</id>
    <checksum>243456abe</checksum>
    <url>https://balblabla.org/toto.gz</url>
  </entry>
  <entry>
    <id>id_2</id>
    <checksum>243456abef</checksum>
    <url>https://balblabla.org/tata.gz</url>
  </entry>
</blabla>

 

Je voudrais extraire les url, les télécharger puis vérifier le checksum.
J'imagine qu'il y a des parser qui permettraient de faire ça facilement, non ?

 

Pour l'instant, je regarde xmlstarlet et les queries xpath, ça s'intègre pas trop mal. Mais y-a-t-il mieux ?

Message cité 1 fois
Message édité par o'gure le 06-11-2012 à 15:03:05
Reply

Marsh Posté le 06-11-2012 à 14:35:03   

Reply

Marsh Posté le 06-11-2012 à 15:03:49    

grep + sed :D
bon, ok, c'est du bricolage :D

Message cité 1 fois
Message édité par escagasse le 06-11-2012 à 15:04:06

---------------
noob :s
Reply

Marsh Posté le 06-11-2012 à 15:07:11    

escagasse a écrit :

grep + sed :D
bon, ok, c'est du bricolage :D


à la rigueur je préfère awk si je dois bricoler :o

Reply

Marsh Posté le 06-11-2012 à 15:08:48    

perso si je veux bricoler proprement j'utilise python  [:icon3]


---------------
noob :s
Reply

Marsh Posté le 06-11-2012 à 15:10:22    

xmlstarlet ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-11-2012 à 15:17:04    


Oui ?

Spoiler :

toi, t'as gardé l'onglet ouvert longtemps et raté mon edit ? [:cupra]

Message cité 1 fois
Message édité par o'gure le 06-11-2012 à 15:17:15
Reply

Marsh Posté le 06-11-2012 à 15:20:59    

Là je m'en sort bien avec  un script de la sorte, plus qu'à le fignoler

Code :
  1. FILE=manifest.xml
  2. XML="xmlstarlet sel -t -v"
  3. function download_and_check {
  4. url_query="//blabla/entry[id='$1']/url"
  5. url=$($XML $url_query $FILE)
  6. checksum_query="//blabla/entry[id='$1']/checksum"
  7. checksum=$($XML $checksum_query $FILE)
  8. wget $url -O $1 -o /dev/null
  9. echo $checksum
  10. /usr/bin/md5sum $1
  11. }
  12. download_and_check application_groups.xml.gz
  13. download_and_check applications.xml.gz
  14. download_and_check heuristics.bin.gz


Message édité par o'gure le 06-11-2012 à 15:21:07
Reply

Marsh Posté le 06-11-2012 à 15:25:31    

o'gure a écrit :


à la rigueur je préfère awk si je dois bricoler :o


+1 :o


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
Reply

Marsh Posté le 06-11-2012 à 15:25:58    

mais j'aime pas scripter  [:schtroumpfgrognon]


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
Reply

Marsh Posté le 06-11-2012 à 15:28:00    

o'gure a écrit :


Oui ?

Spoiler :

toi, t'as gardé l'onglet ouvert longtemps et raté mon edit ? [:cupra]



 
j'ai un métier moi :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-11-2012 à 15:28:00   

Reply

Marsh Posté le 06-11-2012 à 15:29:46    

black_lord a écrit :


 
j'ai un métier moi :o


Genre...
Ose me dire que tu n'as pas de bots qui font le taf pour toi :o

Reply

Marsh Posté le 06-11-2012 à 15:30:08    

Mais bon, si vous avez mieux, je suis preneur :o

Reply

Marsh Posté le 06-11-2012 à 15:39:18    

o'gure a écrit :


Genre...
Ose me dire que tu n'as pas de bots qui font le taf pour toi :o


moi, non :o
 

Spoiler :

c'est des esclaves [:hahaguy]


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
Reply

Marsh Posté le 06-11-2012 à 15:45:53    

o'gure a écrit :

Mais bon, si vous avez mieux, je suis preneur :o


http://hfr-rehost.net/www.tshirthell.com/shirts/products/a974/a974.gif?v101512


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-11-2012 à 16:00:47    

o'gure a écrit :

Mais bon, si vous avez mieux, je suis preneur :o


un(e) stagiaire :o  :??:


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 06-11-2012 à 16:06:57    

Bon, c'est pas blabla :o
 
Si je me base sur cet exemple

o'gure a écrit :


<blabla>
  <entry>
    <id>id_1</id>
    <checksum>243456abe</checksum>
    <url>https://balblabla.org/toto.gz</url>
  </entry>
  <entry>
    <id>id_2</id>
    <checksum>243456abef</checksum>
    <url>https://balblabla.org/tata.gz</url>
  </entry>
</blabla>




Je ne trouve pas d'invocation avec xmlstarlet pour changer par exemple l'url de id_1. Par exemple je voudrais à l'issue de l'invocation avoir:

<blabla>
  <entry>
    <id>id_1</id>
    <checksum>243456abe</checksum>
    <url>file://var/truc/bidule/toto.gz</url>
  </entry>
  <entry>
    <id>id_2</id>
    <checksum>243456abef</checksum>
    <url>https://balblabla.org/tata.gz</url>
  </entry>
</blabla>


une idée ?

Reply

Marsh Posté le 06-11-2012 à 16:14:17    

Ah si, c'est tombé en marche

Reply

Marsh Posté le 06-11-2012 à 16:19:56    

o'gure a écrit :

Ah si, c'est tombé en marche


[:bien]


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
Reply

Marsh Posté le 09-11-2012 à 17:04:44    

Sinon awk parse super bien ce genre de chose :

Code :
  1. awk -F'[<>]' '$2=="url" {print $3}' fichier.xml


 
plus qu'a boucler sur les URL trouvées/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed