3 回答
TA贡献1848条经验 获得超10个赞
您可以尝试xmllint
xmllint程序解析一个或多个XML文件,这些文件在命令行上指定为xmlfile。根据选择的选项,它会打印各种类型的输出。这对于检测XML代码和XML解析器中的错误很有用
它允许您使用--pattern选项通过xpath选择XML文档中的元素。
在Mac OS X(Yosemite)上,默认情况下已安装它。
在Ubuntu上,如果尚未安装,则可以运行apt-get install libxml2-utils
TA贡献1805条经验 获得超9个赞
这是一个完整的工作示例。
如果仅提取电子邮件地址,则可以执行以下操作:
1)假设XML文件spam.xml类似于
<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)您可以使用以下简短的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
该示例的结果是:
0 pope@vatican.gob.va
1 father@nwo.com
2 son@nwo.com
重要说明:
请勿将其用于严重问题。可以玩耍,获得快速结果,学习grep等,这是可以的,但是您绝对应该寻找,学习和使用XML解析器进行生产(请参见下面的Micha评论)。
- 3 回答
- 0 关注
- 550 浏览
添加回答
举报