Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
145 views
in Technique[技术] by (71.8m points)

Ansible xml Find By Attribute

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...