繁体   English   中英

Shell脚本,解析XML片段

[英]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

两者都是不错的选择,如果你想严格选择你的脚本应该独立于外部程序,我认为使用正则表达式会更好。 使用正则表达式可以使程序功能比使用外部程序更快。

但是使用正则表达式并不总是一个可行的选择,特别是当你的时间较少时,你正在制作的正则表达式很复杂。 外部程序只是一个选项。 如果您计划将此脚本移动到另一台计算机,则此外部程序可能会导致依赖性或开销。

我会建议正则表达式。 这些可能对你有帮助。 看一看。

如何使用shellscript解析XML?

  • 这真的很有帮助

这在内容中有一些想法。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM