facebook instagram twitter rss2 youtube youtube wordpress joomla tux appleinc windows skype paypal
 

La solution simple et rapide : le parseur xml_grep

Sous Ubuntu (ou toute distribution basée sur Debian), pour utiliser cet outil, il vous faudra installer le paquet "xml-twig-tools" qui vous permettra d'utiliser le parseur xml_grep en ligne de commande très simplement.

Pour découvrir toutes les fonctionnalités de cet outil, veuillez vous référer au manuel d'xml_grep.

Exemple : Extraire toutes les valeurs des balises 'title' d'un fichier XML

Scénario 1 : Imaginons que vous vouliez exporter depuis Wordpress les données des produits créés avec l'extension WooCommerce et désirez seulement en extraire le nom de chaque produit pour en faire une liste.

C'est très pratique par exemple pour éviter d'utiliser deux fois le même nom de produit, savoir rapidemment si la fiche d'une marchandise a déjà été faite, ou dresser une liste complète de tous les produits mis en ligne.

  1. Pour ce faire il vous faudra d'abord vous conecter au tableau de bord de l'administration de Wordpress, puis aller sur le menu Outils > Exporter
  2. Sélectionnez "Produits" > cliquez sur "Télécharger le fichier d'exportation" et nommez-le par exemple "produits.xml"

    Exporter des données de wordpress woocommerce

  3. Cela vous donnera ainsi un fichier comprenant la liste exhaustive de tous les produits que vous avez créés dans Woocommerce avec leurs noms, descriptions, variations s'il en existe etc.
  4. Depuis le dossier ou vous avez enregistré votre fichier "produits.xml" lancez la commande :

    xml_grep 'title' produits.xml --text_only > liste.txt

    Vous l'aurez compris cela listera toutes les valeurs des balises "title" du fichier "produits.xml" de vos produits dans un fichier "liste.txt".

    NB. Sous Ubuntu >=18.04 pour ouvrir un terminal directement depuis le dossier ou vous êtes, faites un clic droit > "Ouvrir dans un terminal".

Scénario 2 : Mais les fichiers xml des produits créés avec Woocoomerce n'ont pas que des balises "title" pour des produits, il nous faut donc spécifier que nous ne voulons que ceux-ci exclusivement. Cela tombe bien, car ceux-ci sont des sous-noeud des balises "item".

La procédure sera la même que ci-dessus, seule la ligne de commande changera pour :

xml_grep 'item/title' produits.xml --text_only > liste-produits.txt

Scénario 3 : Mais ce serait bien plus pratique de les avoir classés par ordre alphabétique !
Qu'a cela ne tienne, on utilise alors "sort" avec un pipe ainsi :

xml_grep 'item/title' produits.xml --text_only | sort > liste-produits.txt

Vous avez aimé cet article, partagez-le !

 
     

Logo des hirondelles du net

C'est dans les utopies d'aujourd'hui que sont les solutions de demain