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

发布于 2025-01-09 15:15:45 字数 1281 浏览 0 评论 0原文

我正在尝试使用一个 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

..两者都返回:

 foo="bar"
 bar="foo"

但是我希望有一个类似的输出(属性名称和 =" 已删除):

bar
foo

遗憾的是,用 string() 包装查询并没有 但是

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

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

I'm trying to retrieve multiple attribute values (foo and bar) with one single xpath query.

This is my XML content (test.xml):

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

Current best solution based on:

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

..which both return:

 foo="bar"
 bar="foo"

However I would like to have an output similar this (attribute names and =" removed):

bar
foo

Wrapping the query with string() sadly doesn't work.

Is it actually possible to get multiple attribute values at once, or am I trying something impossible?

I'm aware that I could pipe the output through cut or awk but that isn't possible in the actual environment.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍景流年 2025-01-16 15:15:45

找到解决办法了!

有一个名为 concat 的函数 完全实现了我正在寻找的功能:

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

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

Found a solution!

There is a function available called concat which allows exactly the functionality I was looking for:

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

This allows me to query both attribute values (using string) in one query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文