通过 xpath 从 XML 获取多个属性值

Getting multiple attribute values from XML via xpath

我正在尝试通过一个 xpath 查询检索多个属性值(foobar)。

这是我的XML内容(test.xml):

<root>
    <level1>
        <child foo="bar" bar="foo" />
    </level1>
</root>

当前最佳解决方案基于:

xmllint test.xml --xpath '//root/level1/child/@*[name()="foo" or name()="bar"]'
xpath -q -e '//root/level1/child/@*[name()="foo" or name()="bar"]' test.xml

..return:

 foo="bar"
 bar="foo"

但是我想要一个类似这样的输出(删除了属性名称和 ="):

bar
foo

遗憾的是,用 string() 包装查询不起作用。

是否真的可以一次获取多个属性值,还是我在尝试一些不可能的事情?

我知道我可以通过 cutawk 传输输出,但这在实际环境中是不可能的。

找到解决方案!

有一个名为 concat 的函数可用,它完全可以实现我正在寻找的功能:

xpath -q -e 'concat(string(//root/level1/child/@foo), "\n", string(//root/level1/child/@bar))' test.xml

这允许我在一次查询中查询两个属性值(使用 string)。