I have soap api response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" //... >
<soapenv:Body>
<multiRef id="id0" //... >
//...
<upgradeCritical href="#id12"/>
</multiRef>
//...
<multiRef id="id12" soapenc:root="0" xsi:type="xsd:boolean"//... >true</multiRef>
</soapenv:Body>
</soapenv:Envelope>
I need to find upgradeCritical
value. But it references another element. (multiRef with id12)
Here is my playbook:
---
- hosts: localhost
gather_facts: false
tasks:
- name: Get isCritical id List.
xml:
path: "query-result.xml"
content: attribute
xpath: /soapenv:Envelope/soapenv:Body/multiRef/upgradeCritical
namespaces:
soapenv: "http://schemas.xmlsoap.org/soap/envelope/"
register: is_critical
- debug:
msg: "Id is: {{ item.upgradeCritical.href[1:] }}"
loop: "{{is_critical.matches}}"
Output:
TASK [debug] **************************************************************
ok: [localhost] => (item={'upgradeCritical': {'href': '#id12'}}) => {
"msg": "Id is: id12"
}
I need to get the value of <multiRef id="id12" ...>
How can I find an XML element by attribute?
question from:
https://stackoverflow.com/questions/65845886/ansible-xml-find-by-attribute 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…