如何解决Ansible在XML文件中编辑具有相同名称的多个属性
我正在尝试使用Ansible编辑各种服务器的配置文件,并遇到了一个XML文档,该文档具有多个具有相同名称的属性,根据服务器状态需要调整该值。压缩后的配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Document>
<properties>
<property name="daily.backup.filename">test.data.thin</property>
<property name="admin.ui.allow.manual.backup.download">false</property>
<property name="admin.ui.allow">false</property>
</properties>
</Document>
此配置文件将具有50多个具有不同名称的属性。我的目的是在不使用lineinfile模块的情况下调整单个属性内的数据。
当前,我能够读取所需的特定值,但是如果顺序更改,该值将更改。
- hosts: localhost
tasks:
- name: Read an element's attribute values
xml:
path: /tmp/test.xml
xpath: /Document/properties/property
content: text
register: xmlresp
- name: Show an attribute value
debug:
var: xmlresp.matches[2]
现在,我只需要能够为“ admin.ui.allow.manual.backup.download”属性编写新信息。就像将内容更改为“ true”或“ True”
解决方法
要在特定元素中获取值,可以在xpath中进行更多限制:
- name: "Read an element's attribute values"
xml:
path: /tmp/test.xml
xpath: /Document/properties/property[@name='admin.ui.allow.manual.backup.download']
content: text
register: xmlresp
类似地,如果需要,您可以使用限制性更强的(单个元素)xpath更新元素的内容:
- name: Update element value if needed
xml:
path: /tmp/test.xml
xpath: /Document/properties/property[@name='admin.ui.allow.manual.backup.download']
value: "true"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。