community.general.xml модуль — Управление фрагментами XML-файлов или строк
Примечание
Этот модуль является частью коллекции community.general (версия 9.5.0).
У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования, см. Требования для подробностей.
Для использования в плейбуке укажите: community.general.xml.
Описание
- Интерфейс типа CRUD для управления фрагментами XML-файлов.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- lxml >= 2.3.0
Параметры
Параметр | Комментарии |
|---|---|
add_children list / elements=any | Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) к выбранному элементу для данного Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, Для этого параметра необходимо установить |
attribute any | Атрибут для выбора при использовании параметра Это строка, не начинающаяся с |
backup boolean | Создать резервную копию файла, включая информацию о временной метке, чтобы можно было восстановить исходный файл, если он был случайно поврежден. Варианты:
|
content string | |
count boolean | |
input_type string | |
insertafter boolean | Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) после последнего выбранного элемента для данного Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, Для этого параметра необходимо установить Варианты:
|
insertbefore boolean | Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) перед первым выбранным элементом для данного Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, Для этого параметра необходимо установить Варианты:
|
namespaces dictionary | Сопоставление пространств имен Должен быть Значение по умолчанию: |
path aliases: dest, file path | Путь к файлу, с которым нужно работать. Этот файл должен существовать заранее. Этот параметр обязателен, если не указан |
pretty_print boolean | Форматированный вывод XML. Варианты:
|
print_match boolean | |
set_children list / elements=any | Установить дочерний(-ие) элемент(-ы) выбранного элемента для данного Удаляет все существующие дочерние элементы. Дочерние элементы должны быть указаны, как в Для этого параметра необходимо установить |
state aliases: ensure string | Установить или удалить выбор XPath (узел(узлы), атрибут(ы)). Варианты:
|
strip_cdata_tags boolean | Удалить теги CDATA, окружающие текстовые значения. Обратите внимание, что это может повредить ваш XML-файл, если текстовые значения содержат символы, которые могут быть интерпретированы как XML. Варианты:
|
значение любое | Желаемое состояние выбранного атрибута. Это может быть строка, или для сброса значения используется ключевое слово Python Элементы по умолчанию не имеют значения (но присутствуют). Атрибуты по умолчанию — пустая строка. |
xmlstring строка | Строка, содержащая XML, над которым нужно произвести операцию. Этот параметр обязателен, если не задан |
xpath строка | Действительное выражение XPath, описывающее элемент(ы), которые нужно изменить. Обычно работает с корнем документа, |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в |
diff_mode | Поддержка: полная | Возвращает детали изменений (или возможных изменений в |
Примечания
Примечание
- Используйте параметры
--checkи--diffпри тестировании выражений. - Вывод diff автоматически отформатирован, поэтому может не отражать фактическое содержимое файла, только его структуру.
- Этот модуль не обрабатывает сложные выражения XPath, поэтому ограничивайте выражения XPath простыми.
- Обратите внимание, что в случае именованных XML-элементов вам понадобится параметр
namespaces, см. примеры. - Префиксы пространств имён должны использоваться для всех дочерних элементов элемента, где определено пространство имён, если для них не определено другое пространство имён.
См. также
См. также
- Wiki-страница модуля xml
-
Дополнительная информация, связанная с разработкой этого модуля xml.
- Введение в XPath
-
Краткое руководство по XPath (w3schools.com).
- Справочная документация по XPath
-
Справочная документация по XSLT/XPath (developer.mozilla.org).
Примеры
# Consider the following XML file:
#
# <business type="bar">
# <name>Tasty Beverage Co.</name>
# <beers>
# <beer>Rochefort 10</beer>
# <beer>St. Bernardus Abbot 12</beer>
# <beer>Schlitz</beer>
# </beers>
# <rating subjective="true">10</rating>
# <website>
# <mobilefriendly/>
# <address>http://tastybeverageco.com</address>
# </website>
# </business>
- name: Remove the 'subjective' attribute of the 'rating' element
community.general.xml:
path: /foo/bar.xml
xpath: /business/rating/@subjective
state: absent
- name: Set the rating to '11'
community.general.xml:
path: /foo/bar.xml
xpath: /business/rating
value: 11
# Retrieve and display the number of nodes
- name: Get count of 'beers' nodes
community.general.xml:
path: /foo/bar.xml
xpath: /business/beers/beer
count: true
register: hits
- ansible.builtin.debug:
var: hits.count
# Example where parent XML nodes are created automatically
- name: Add a 'phonenumber' element to the 'business' element
community.general.xml:
path: /foo/bar.xml
xpath: /business/phonenumber
value: 555-555-1234
- name: Add several more beers to the 'beers' element
community.general.xml:
path: /foo/bar.xml
xpath: /business/beers
add_children:
- beer: Old Rasputin
- beer: Old Motor Oil
- beer: Old Curmudgeon
- name: Add several more beers to the 'beers' element and add them before the 'Rochefort 10' element
community.general.xml:
path: /foo/bar.xml
xpath: '/business/beers/beer[text()="Rochefort 10"]'
insertbefore: true
add_children:
- beer: Old Rasputin
- beer: Old Motor Oil
- beer: Old Curmudgeon
# NOTE: The 'state' defaults to 'present' and 'value' defaults to 'null' for elements
- name: Add a 'validxhtml' element to the 'website' element
community.general.xml:
path: /foo/bar.xml
xpath: /business/website/validxhtml
- name: Add an empty 'validatedon' attribute to the 'validxhtml' element
community.general.xml:
path: /foo/bar.xml
xpath: /business/website/validxhtml/@validatedon
- name: Add or modify an attribute, add element if needed
community.general.xml:
path: /foo/bar.xml
xpath: /business/website/validxhtml
attribute: validatedon
value: 1976-08-05
# How to read an attribute value and access it in Ansible
- name: Read an element's attribute values
community.general.xml:
path: /foo/bar.xml
xpath: /business/website/validxhtml
content: attribute
register: xmlresp
- name: Show an attribute value
ansible.builtin.debug:
var: xmlresp.matches[0].validxhtml.validatedon
- name: Remove all children from the 'website' element (option 1)
community.general.xml:
path: /foo/bar.xml
xpath: /business/website/*
state: absent
- name: Remove all children from the 'website' element (option 2)
community.general.xml:
path: /foo/bar.xml
xpath: /business/website
set_children: []
# In case of namespaces, like in below XML, they have to be explicitly stated.
#
# <foo xmlns="http://x.test" xmlns:attr="http://z.test">
# <bar>
# <baz xmlns="http://y.test" attr:my_namespaced_attribute="true" />
# </bar>
# </foo>
# NOTE: There is the prefix 'x' in front of the 'bar' element, too.
- name: Set namespaced '/x:foo/x:bar/y:baz/@z:my_namespaced_attribute' to 'false'
community.general.xml:
path: foo.xml
xpath: /x:foo/x:bar/y:baz
namespaces:
x: http://x.test
y: http://y.test
z: http://z.test
attribute: z:my_namespaced_attribute
value: 'false'
- name: Adding building nodes with floor subnodes from a YAML variable
community.general.xml:
path: /foo/bar.xml
xpath: /business
add_children:
- building:
# Attributes
name: Scumm bar
location: Monkey island
# Subnodes
_:
- floor: Pirate hall
- floor: Grog storage
- construction_date: "1990" # Only strings are valid
- building: Grog factory
# Consider this XML for following example -
#
# <config>
# <element name="test1">
# <text>part to remove</text>
# </element>
# <element name="test2">
# <text>part to keep</text>
# </element>
# </config>
- name: Delete element node based upon attribute
community.general.xml:
path: bar.xml
xpath: /config/element[@name='test1']
state: absent
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
действия словарь | Словарь с исходным xpath, пространствами имён и состоянием. Возвращается: при успехе Пример: |
backup_file строка | Имя созданного файла резервной копии Возвращается: при Пример: |
количество целое число | Количество совпадений xpath. Возвращается: при задании параметра ‘count’ Пример: |
совпадения список / элементы=строка | Найденные совпадения xpath. Возвращается: при задании параметра ‘print_match’ |
сообщение строка | Сообщение, связанное с выполненными действиями. Возвращается: всегда |
xmlstring строка | XML-строка результирующего вывода. Возвращается: при задании параметра ‘xmlstring’ |
Ссылки на сборку
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/xml_module.html