Zde je úplný pracovní příklad.
Pokud se jedná pouze o extrahování e-mailových adres, můžete udělat něco jako:
1) Předpokládejme, že soubor XML spam.xml je podobný
<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) E-maily můžete získat a zpracovat pomocí tohoto krátkého bash kódu:
#!/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
Výsledek tohoto příkladu je:
0 [email protected]
1 [email protected]
2 [email protected]
Důležitá poznámka:
Nepoužívejte to na vážné věci. To je v pořádku pro hraní, získávání rychlých výsledků, učení grepu atd., ale měli byste určitě hledat, učit se a používat XML parser pro produkci (viz Michův komentář níže).
Můžete zkusit xmllint
Program xmllint analyzuje jeden nebo více souborů XML, zadaných na příkazovém řádku jako xmlfile. Tiskne různé typy výstupů v závislosti na zvolených možnostech. Je to užitečné pro detekci chyb jak v XML kódu, tak v XML parseru
Umožňuje vám vybrat prvky v dokumentu XML pomocí xpath pomocí volby --pattern.
V systému Mac OS X (Yosemite) je nainstalován ve výchozím nastavení.
Na Ubuntu, pokud ještě není nainstalováno, můžete spustit apt-get install libxml2-utils
Překvapuje mě, že se nikdo nezmínil o xmlsh. Prohlášení o poslání:
Shell příkazového řádku pro XML Založený na filozofii a designu theUnix Shells
xmlsh poskytuje známé skriptovací prostředí, ale speciálně přizpůsobené pro skriptování xml procesů.
Zde je uveden seznam příkazů podobných shellu.
Používám xed
příkaz lot, který je ekvivalentní sed
pro XML a umožňuje XPath
na základě vyhledávání a nahrazení.
K dispozici je také xmlstarlet (který je k dispozici také pro Windows).
http://xmlstar.sourceforge.net/doc/xmlstarlet.txt