[英]Shell script, parse XML snippet
在shell脚本(Linux,bash,#!/ bin / sh)中,我有一个包含XML数据的变量,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<interface>
<objects retrieved="0" total="0"/>
</interface>
获取此数据时已经完成了一些错误处理,请关注实际问题。 问题是:简单/有效地读取“对象”元素的属性数据(命名为“已检索”)。 它可以是0或1.(没有别的)。 我想我有两个选择:正则表达式和一些外部程序的XML解析。 但我应该选择哪一个? 提前致谢。
您可以使用xmlstarlet
来获取attr:
$ xmlstarlet sel -t -m //objects -v @retrieved input.xml
0
要么
$ xmlstarlet sel -t -m //objects/@retrieved -v . input.xml
-m or --match <xpath> - match XPATH expression
-v or --value-of <xpath> - print value of XPATH expression
两者都是不错的选择,如果你想严格选择你的脚本应该独立于外部程序,我认为使用正则表达式会更好。 使用正则表达式可以使程序功能比使用外部程序更快。
但是使用正则表达式并不总是一个可行的选择,特别是当你的时间较少时,你正在制作的正则表达式很复杂。 外部程序只是一个选项。 如果您计划将此脚本移动到另一台计算机,则此外部程序可能会导致依赖性或开销。
我会建议正则表达式。 这些可能对你有帮助。 看一看。
这在内容中有一些想法。
http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/
这是一个将XML名称 - 值对和属性转换为bash变量的函数。
http://www.humbug.in/2010/parse-simple-xml-files-using-bash-extract-name-value-pairs-and-attributes/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.