Voici un exemple complet et fonctionnel.
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 est comme suit
<spam>
<victims>
<victim>
<name>The Pope</name>
<email>pope@vatican.gob.va</email>
<is_satan>0</is_satan>
</victim>
<victim>
<name>George Bush</name>
<email>father@nwo.com</email>
<is_satan>1</is_satan>
</victim>
<victim>
<name>George Bush Jr</name>
<email>son@nwo.com</email>
<is_satan>0</is_satan>
</victim>
</victims>
</spam>
2) Vous pouvez obtenir les emails 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 pope@vatican.gob.va
1 father@nwo.com
2 son@nwo.com
Remarque importante :
Ne l'utilisez pas pour les affaires sérieuses. C'est bien 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).
3 votes
Devez-vous le faire en Shell ? Je sais qu'il est facile de le faire en Perl ou en Python.
0 votes
Une fois que le parseur a analysé le xml, que voulez-vous en faire ?
0 votes
@Joel : Je veux récupérer des adresses email à partir d'un fichier xml défini et envoyer des emails à ces adresses.
0 votes
Pouvez-vous utiliser un xpath pour ce faire ? Dans ce cas, xmlint, selon ma réponse, peut vous servir.