3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以嘗試xmllint
xmllint程序解析一個(gè)或多個(gè)XML文件,這些文件在命令行上指定為xmlfile。根據(jù)選擇的選項(xiàng),它會(huì)打印各種類(lèi)型的輸出。這對(duì)于檢測(cè)XML代碼和XML解析器中的錯(cuò)誤很有用
它允許您使用--pattern選項(xiàng)通過(guò)xpath選擇XML文檔中的元素。
在Mac OS X(Yosemite)上,默認(rèn)情況下已安裝它。
在Ubuntu上,如果尚未安裝,則可以運(yùn)行apt-get install libxml2-utils

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是一個(gè)完整的工作示例。
如果僅提取電子郵件地址,則可以執(zhí)行以下操作:
1)假設(shè)XML文件spam.xml類(lèi)似于
<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)您可以使用以下簡(jiǎn)短的bash代碼獲取電子郵件并進(jìn)行處理:
#!/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
該示例的結(jié)果是:
0 pope@vatican.gob.va
1 father@nwo.com
2 son@nwo.com
重要說(shuō)明:
請(qǐng)勿將其用于嚴(yán)重問(wèn)題??梢酝嫠?,獲得快速結(jié)果,學(xué)習(xí)grep等,這是可以的,但是您絕對(duì)應(yīng)該尋找,學(xué)習(xí)和使用XML解析器進(jìn)行生產(chǎn)(請(qǐng)參見(jiàn)下面的Micha評(píng)論)。
添加回答
舉報(bào)