You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅提取Ansible XML模块返回的JSON值而非键值对?

提取Ansible XML模块返回的具体值

不用正则也能轻松拿到你要的8779-8405,直接利用Ansible的结构化数据访问或者json_query过滤器就行,两种方法都很简便:

方法1:直接通过列表+字典索引取值

XML模块返回的matches是一个列表,第一个元素就是包含版本号的字典,直接通过索引定位即可:

假设你把XML模块的结果注册到了xml_output变量里,用下面的方式提取值:

{{ xml_output.matches.0['app-version'] }}

完整playbook示例:

- name: 获取设备版本号
  hosts: localhost
  tasks:
    - name: 解析XML配置
      community.general.xml:
        xpath: "/response/result/system/app-version"
        state: present
        # 替换为你的XML文件路径或对应数据源配置
        path: "/path/to/device/config.xml"
      register: xml_output

    - name: 输出纯版本值
      debug:
        msg: "{{ xml_output.matches.0['app-version'] }}"

方法2:使用json_query过滤器

如果需要更灵活的结构化查询,用json_query也可以,注意带连字符的键需要加引号:

{{ xml_output | json_query('matches[0]."app-version"') }}

对应的playbook任务:

- name: 用json_query提取版本值
      debug:
        msg: "{{ xml_output | json_query('matches[0]."app-version"') }}"

这两种方法都是直接操作结构化数据,比正则替换更可靠,不会因为输出格式的小变动失效。

内容的提问来源于stack exchange,提问作者Moridn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:25:05