如何使用shellscript解析XML

我想知道使用shellscript解析XML文件的最佳方法是什么?


应该一个人手工做吗?

第三层图书馆是否存在?

如果您已经做到了,请告诉我您是如何做到的


翻阅古今
浏览 551回答 3
3回答

慕桂英546537

您可以尝试xmllintxmllint程序解析一个或多个XML文件,这些文件在命令行上指定为xmlfile。根据选择的选项,它会打印各种类型的输出。这对于检测XML代码和XML解析器中的错误很有用它允许您使用--pattern选项通过xpath选择XML文档中的元素。在Mac OS X(Yosemite)上,默认情况下已安装它。在Ubuntu上,如果尚未安装,则可以运行apt-get install libxml2-utils

Cats萌萌

这是一个完整的工作示例。如果仅提取电子邮件地址,则可以执行以下操作:1)假设XML文件spam.xml类似于<spam><victims>&nbsp; <victim>&nbsp; &nbsp; <name>The Pope</name>&nbsp; &nbsp; <email>pope@vatican.gob.va</email>&nbsp; &nbsp; <is_satan>0</is_satan>&nbsp; </victim>&nbsp; <victim>&nbsp; &nbsp; <name>George Bush</name>&nbsp; &nbsp; <email>father@nwo.com</email>&nbsp; &nbsp; <is_satan>1</is_satan>&nbsp; </victim>&nbsp; <victim>&nbsp; &nbsp; <name>George Bush Jr</name>&nbsp; &nbsp; <email>son@nwo.com</email>&nbsp; &nbsp; <is_satan>0</is_satan>&nbsp; </victim></victims></spam>2)您可以使用以下简短的bash代码获取电子邮件并进行处理:#!/bin/bashemails=($(grep -oP '(?<=email>)[^<]+' "/my_path/spam.xml"))for i in ${!emails[*]}do&nbsp; echo "$i" "${emails[$i]}"&nbsp; # instead of echo use the values to send emails, etcdone该示例的结果是:0 pope@vatican.gob.va1 father@nwo.com2 son@nwo.com重要说明:请勿将其用于严重问题。可以玩耍,获得快速结果,学习grep等,这是可以的,但是您绝对应该寻找,学习和使用XML解析器进行生产(请参见下面的Micha评论)。
打开App,查看更多内容
随时随地看视频慕课网APP