0

在 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 解析。但是我应该选择哪一个?提前致谢。

4

2 回答 2

1

您可以使用xmlstarlet获取属性:

$ 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
于 2012-04-13T09:39:41.173 回答
1

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

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

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

如何使用 shellscript 解析 XML?

  • 这真的很有帮助

这在内容上有一些想法。

http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/

于 2012-04-13T09:42:29.803 回答