如何使用 xmllint 和 xpath 获取匹配属性值的列表?

如何使用 xmllint 和 xpath 获取匹配属性值的列表?

我正在尝试使用 xmllint 从配置文件中解析 Solr 核心的名称。这有效:

xmllint --xpath /solr/cores/core/@name solr.xml |grep -Po '(?<=name=")[a-z-]+(?=")'

它返回类似:

core-a
core-b
...

这正是我想要的,但我想消除 grep。似乎只用 xpath 就可以做到这一点。如果没有 grep,输出将如下所示:

name="core-a" name="core-b" ...

将表达式包装起来将string()多个输出减少到仅第一个(即core-a仅此而已),这是没有用的。如何string对每个结果应用该函数?

答案1

AFAIK,xmllint相当有限。但你可以使用xmlstarlet用它的sel命令来执行你想做的事情。请参阅xmlstarlet sel --help用法和示例。以你的例子来说,它将是:

xmlstarlet sel -T -t -m /solr/cores/core/@name -v . -n solr.xml

相关内容