无法使用 Ansible 从 XML 解析查询与名称节点对应的值节点

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

您确实必须在 everything 上添加命名空间,其中包括

name
节点:
x:name

所以,你的 XPath 最终会是这样的:

xpath: >-
  /x:Activity
  /x:ActivityDetails
  /x:listOfActivityAttribute
  /x:activityAttribute[x:name='CustomerId']
  /x:value

鉴于两项任务:

- xml:
    path: /tmp/test.xml
    xpath: >-
      /x:Activity
      /x:ActivityDetails
      /x:listOfActivityAttribute
      /x:activityAttribute[x:name='CustomerId']
      /x:value
    content: text
    namespaces:
      x: http://example.com/xsd/frm/v1/Activity/ManageInternalCustomerChangeRequest
  register: xmlresp

- debug:
    var: xmlresp.matches.0['{' ~ _ns_x ~  '}value']
  vars:
    _ns_x: http://example.com/xsd/frm/v1/Activity/ManageInternalCustomerChangeRequest

调试最终给出:

ok: [localhost] => 
  xmlresp.matches.0['{' ~ _ns_x ~  '}value']: '%CustomerId%'

旁注:要干燥此代码,您可以在上层定义

_ns_x
,然后在“xml”任务中执行:

namespaces:
 x: "{{ _ns_x }}"
© www.soinside.com 2019 - 2024. All rights reserved.