Voici un exemple de travail complet.
S'il ne s'agit que d'extraire des adresses e-mail, vous pouvez simplement faire quelque chose comme :
1) Supposons que le fichier XML spam.xml ressemble à
<spam>
<victims>
<victim>
<name>The Pope</name>
<email>[email protected]</email>
<is_satan>0</is_satan>
</victim>
<victim>
<name>George Bush</name>
<email>[email protected]</email>
<is_satan>1</is_satan>
</victim>
<victim>
<name>George Bush Jr</name>
<email>[email protected]</email>
<is_satan>0</is_satan>
</victim>
</victims>
</spam>
2) Vous pouvez récupérer les e-mails et les traiter avec ce court code bash :
#!/bin/bash
emails=($(grep -oP '(?<=email>)[^<]+' "/my_path/spam.xml"))
for i in ${!emails[*]}
do
echo "$i" "${emails[$i]}"
# instead of echo use the values to send emails, etc
done
Le résultat de cet exemple est :
0 [email protected]
1 [email protected]
2 [email protected]
Remarque importante :
Ne l'utilisez pas pour des choses sérieuses. C'est OK pour jouer, obtenir des résultats rapides, apprendre grep, etc. mais vous devriez définitivement rechercher, apprendre et utiliser un analyseur XML pour la production (voir le commentaire de Micha ci-dessous).
Vous pouvez essayer xmllint
Le programme xmllint analyse un ou plusieurs fichiers XML, spécifiés sur la ligne de commande en tant que fichier xml. Il imprime divers types de sortie, selon les options sélectionnées. Il est utile pour détecter les erreurs à la fois dans le code XML et dans l'analyseur XML lui-même
Il vous permet de sélectionner des éléments dans le document XML par xpath, en utilisant l'option --pattern.
Sur Mac OS X (Yosemite), il est installé par défaut.
Sur Ubuntu, s'il n'est pas déjà installé, vous pouvez exécuter apt-get install libxml2-utils
Je suis surpris que personne n'ait mentionné xmlsh. L'énoncé de mission :
Un shell de ligne de commande pour XML Basé sur la philosophie et la conception des shells Unix
xmlsh fournit un environnement de script familier, mais spécifiquement conçu pour les processus de script xml.
Une liste de commandes de type shell est fournie ici.
J'utilise le xed
command a lot qui équivaut à sed
pour XML, et autorise XPath
recherche et remplacement basés.
Il y a aussi xmlstarlet (qui est également disponible pour Windows).
http://xmlstar.sourceforge.net/doc/xmlstarlet.txt