Spec-Zone.ru › Ansible 2.10

community.general.xml – Управление фрагментами XML-файлов или строк

Примечание

Этот плагин является частью коллекции community.general (версия 1.3.2).

Для его установки используйте: ansible-galaxy collection install community.general

Для использования в плейбуке укажите: community.general.xml

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Описание

  • Интерфейс типа CRUD для управления фрагментами XML-файлов.

Требования

Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.

  • lxml >= 2.3.0

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
add_children
список / элементы=строка
Добавить дополнительные дочерние элементы к выбранному элементу для заданного xpath.
Дочерние элементы должны быть указаны в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Для этого параметра необходимо задать xpath.
attribute
сырое
Атрибут для выбора при использовании параметра value.
Это строка, не префикс @.
backup
логическое
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о дате и времени, чтобы вы могли восстановить исходный файл, если случайно его повредили.
content
строка
    Варианты:
  • атрибут
  • текст
Поиск заданного xpath и получение содержимого.
Для этого параметра необходимо задать xpath.
count
логическое
    Варианты:
  • нет ←
  • да
Поиск заданного xpath и подсчёт совпадений.
Для этого параметра необходимо задать xpath.
input_type
строка
    Варианты:
  • xml
  • yaml ←
Тип ввода для add_children и set_children.
insertafter
логическое
    Варианты:
  • нет ←
  • да
Добавить дополнительные дочерние элементы после последнего выбранного элемента для заданного xpath.
Дочерние элементы должны быть указаны в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Для этого параметра необходимо задать xpath.
insertbefore
логическое
    Варианты:
  • нет ←
  • да
Добавить дополнительные дочерние элементы перед первым выбранным элементом для заданного xpath.
Дочерние элементы должны быть указаны в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Для этого параметра необходимо задать xpath.
namespaces
словарь
Отображение соответствия пространства имён prefix:uri для выражения XPath.
Должно быть словарем, а не списком элементов.
path
путь
Путь к файлу для обработки.
Этот файл должен существовать.
Этот параметр обязателен, если не задан xmlstring.

Псевдонимы: dest, file
pretty_print
логическое
    Варианты:
  • нет ←
  • да
Красивый вывод XML.
print_match
логическое
    Варианты:
  • нет ←
  • да
Поиск заданного xpath и вывод совпадений.
Для этого параметра необходимо задать xpath.
set_children
список / элементы=строка
Установить дочерние элементы выбранного элемента для заданного xpath.
Удаляет все существующие дочерние элементы.
Дочерние элементы должны быть указаны, как и в add_children.
Для этого параметра необходимо задать xpath.
state
строка
    Варианты:
  • отсутствует
  • присутствует ←
Установить или удалить выбор XPath (узлы, атрибуты).

Псевдонимы: ensure
strip_cdata_tags
логическое
    Варианты:
  • нет ←
  • да
Удалить теги CDATA, окружающие текстовые значения.
Обратите внимание, что это может сломать ваш XML-файл, если текстовые значения содержат символы, которые могут интерпретироваться как XML.
value
сырое
Желаемое состояние выбранного атрибута.
Это может быть строка, или для удаления значения используется ключевое слово Python None (эквивалент YAML: null).
Элементы по умолчанию не имеют значения (но присутствуют).
Атрибуты по умолчанию имеют пустую строку.
xmlstring
строка
Строка, содержащая XML, над которым необходимо выполнить операцию.
Этот параметр обязателен, если не задан path.
xpath
строка
Действительное выражение XPath, описывающее элемент(ы), который(е) вы хотите изменить.
Обычно работает с корневым элементом документа /.

Примечания

Примечание

  • Используйте опции --check и --diff при тестировании ваших выражений.
  • Вывод diff автоматически отформатирован, поэтому может не отражать фактическое содержимое файла, а только его структуру.
  • Этот модуль не обрабатывает сложные выражения XPath, поэтому ограничивайте выражения XPath простыми выражениями.
  • Обратите внимание, что если ваши XML-элементы используют пространства имён, вам нужно использовать параметр namespaces. Смотрите примеры.
  • Префикс пространства имён должен использоваться для всех дочерних элементов элемента, где определено пространство имён, если для них не определено другое пространство имён.

См. также

См. также

Раздел сообщества по разработке модуля xml wiki

Дополнительная информация по разработке данного модуля 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: yes
  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: yes
    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
    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'

Возвращаемые значения

Общие возвращаемые значения описаны в этом разделе. Ниже приведены поля, уникальные для этого модуля:

Ключ Возвращаемое значение Описание
actions
словарь
успех
Словарь с исходным выражением XPath, пространствами имён и состоянием.

Пример:
{'namespaces': ['namespace1', 'namespace2'], 'state=present': None, 'xpath': 'xpath'}
backup_file
строка
при backup=да
Имя созданного резервного файла.

Пример:
/path/to/file.xml.1942.2017-08-24@14:16:01~
count
целое число
при параметре 'count'
Количество совпадений XPath.

Пример:
2
matches
список / элементы=строка
при параметре 'print_match'
Найденные совпадения XPath.

msg
строка
всегда
Сообщение, связанное с выполненным действием.

xmlstring
строка
при параметре 'xmlstring'
XML-строка результирующего вывода.



Авторы

  • Tim Bielawa (@tbielawa)
  • Magnus Hedemark (@magnus919)
  • Dag Wieers (@dagwieers)

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/xml_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API