为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用shellscript解析XML

如何使用shellscript解析XML

翻阅古今 2019-10-29 10:24:44
我想知道使用shellscript解析XML文件的最佳方法是什么?应该一个人手工做吗?第三层图书馆是否存在?如果您已经做到了,请告诉我您是如何做到的
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您可以尝试xmllint


xmllint程序解析一个或多个XML文件,这些文件在命令行上指定为xmlfile。根据选择的选项,它会打印各种类型的输出。这对于检测XML代码和XML解析器中的错误很有用


它允许您使用--pattern选项通过xpath选择XML文档中的元素。


在Mac OS X(Yosemite)上,默认情况下已安装它。

在Ubuntu上,如果尚未安装,则可以运行apt-get install libxml2-utils


查看完整回答
反对 回复 2019-10-29
?
Cats萌萌

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评论)。


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信