我想知道使用shellscript解析XML文件的最佳方式是什么?
如果你已经做到了,如果你能让我知道你是怎么做到的
发布于 2011-01-14 01:27:39
你可以试试xmllint
xmllint程序解析一个或多个
文件,这些文件在命令行中指定为xmlfile。它打印各种类型的输出,具体取决于所选的选项。它对于检测XML代码和XML解析器本身中的错误都很有用。
它允许您使用--pattern选项通过xpath选择XML文档中的元素。
在Mac OS X (Yosemite)上,它是默认安装的。
在Ubuntu上,如果还没有安装,可以运行apt-get install libxml2-utils
发布于 2014-06-07 02:01:40
这里有一个完整的工作示例。
如果它只是提取电子邮件地址,你可以这样做:
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下面的注释)。
发布于 2011-01-13 23:57:06
还有xmlstarlet (也可以在Windows上使用)。
https://stackoverflow.com/questions/4680143
复制相似问题