我找到了一个做作的两步解决方法。首先,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"