You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xmlstarlet精准提取Maven settings.xml中指定Server的嵌套属性值

xmlstarlet精准提取Maven settings.xml中指定Server的嵌套属性值

嗨,我来帮你搞定这个问题!你之前的命令会返回多余空白是因为直接提取了整个configuration节点的内容,包含了节点间的换行和空格。其实只要把XPath定位得更精准,就能直接拿到干净的name和value值,完全不用依赖sed这类工具来做后续清理。

单独提取Name值

用这条命令可以直接获取指定Server下的Private-Token名称:

xmlstarlet sel -t -m '//_:server[_:id="gitlab-company-name"]/_:configuration/_:httpHeaders/_:property' -v '_:name' -n ${HOME}/.m2/settings.xml

单独提取Value值

同样,精准定位到value节点就能拿到令牌值:

xmlstarlet sel -t -m '//_:server[_:id="gitlab-company-name"]/_:configuration/_:httpHeaders/_:property' -v '_:value' -n ${HOME}/.m2/settings.xml

同时输出Name和Value(带格式)

如果希望一次性输出成对的名称和值,比如用冒号分隔,也可以调整命令:

xmlstarlet sel -t -m '//_:server[_:id="gitlab-company-name"]/_:configuration/_:httpHeaders/_:property' -v '_:name' -o ": " -v '_:value' -n ${HOME}/.m2/settings.xml

为什么这个方法更可靠?

  • 你之前用-v '_:configuration'会返回整个节点下的所有文本,包括节点之间的空白字符,所以才会有多余的空行和空格。
  • 直接定位到_:name和_:value节点,xmlstarlet只会返回节点内的纯文本内容,不需要后续的过滤处理。
  • 命令里的_:是用来匹配settings.xml默认命名空间的写法,这个是正确的,不用修改。

备注:内容来源于stack exchange,提问作者Wojciech Sciesinski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:48:08