Spec-Zone.ru › Ansible 2.11

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

Примечание

Этот плагин входит в коллекцию community.general (версия 2.0.1).

Для его установки используйте: 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
словарь
Отображение соответствия имен пространств имён для выражения XPath.
Должно быть словарем, а не списком элементов.
path
путь
Путь к файлу, с которым нужно работать.
Этот файл должен существовать.
Этот параметр обязателен, если не указан xmlstring.

псевдонимы: dest, file
pretty_print
логическое значение
    Варианты:
  • нет ←
  • да
Красивая печать XML-вывода.
print_match
логическое значение
    Варианты:
  • нет ←
  • да
Поиск заданного xpath и вывод всех совпадений.
Для этого параметра необходимо задать xpath.
set_children
список / элементы=строка
Установка дочерних элементов выбранного элемента для заданного xpath.
Удаляет все существующие дочерние элементы.
Дочерние элементы должны быть заданы как в add_children.
Для этого параметра необходимо задать xpath.
state
строка
    Варианты:
  • absent
  • present ←
Устанавливает или удаляет выбор 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

Дополнительная информация, связанная с разработкой этого модуля 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/xml_module.html

Spec-Zone.ru

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