Ansible 无法通过 XPath 读取属性(不是元素)

问题描述 投票:0回答:1
xml xpath ansible
1个回答
0
投票

我找到了一个做作的两步解决方法。首先,XPath 仅匹配元素。其次,导航 JSON 结果/匹配属性。

-name: 'Match XPath'
  xml:
    path: 'composite.xml'
    xpath: '/sca:composite/@revision'
    content: attribute
    namespaces:
      sca: 'http://xmlns.oracle.com/sca/1.0'
  register: xpath_match

-name: 'Get revision'
  set_fact:
    my_revision: '{{xpath_match.matches[0]["{http://xmlns.oracle.com/sca/1.0}composite"].revision}}'

注意:XPath 匹配返回一个 JSON 对象,例如:

{
  "matches": [
    {
      "{http://xmlns.oracle.com/sca/1.0}composite": {
        "revision": "1.0.1"
      }
    }
  ]
}

不要对

"composite"
的 JSON 字段名称感到困惑。它的语法是
"{xmlnamespace}composite"

© www.soinside.com 2019 - 2024. All rights reserved.