Spec-Zone.ru › Ansible 2.6

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

Новое в версии 2.4.

  • Обзор
    • Требования
  • Параметры
  • Примечания
  • Примеры
  • Значения возврата
  • Статус
  • Обслуживание
    • Автор

Обзор

  • Интерфейс типа CRUD для управления фрагментами XML-файлов.
  • Вам также может быть интересен краткий учебник на https://www.w3schools.com/xml/xpath_intro.asp и https://developer.mozilla.org/en-US/docs/Web/XPath.

Требования

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

  • lxml >= 2.3.0

Параметры

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

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

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

Примечания

Примечание

  • Используйте опции --check и --diff при тестировании выражений.
  • Вывод diff автоматически отформатирован, поэтому он может не отражать фактическое содержимое файла, а только его структуру.
  • Этот модуль не обрабатывает сложные выражения XPath, поэтому ограничивайте выражения XPath простыми.
  • Обратите внимание, что если ваши XML-элементы имеют пространства имен, вам нужно использовать параметр namespaces.
  • Префиксы пространств имён должны использоваться для всех дочерних элементов элемента, где определено пространство имён, если для них не определено другое пространство имён.
  • Дополнительную информацию об этом модуле можно получить в сообществе wiki по адресу https://github.com/ansible/community/wiki/Module:-xml

Примеры

- name: Remove the subjective attribute of the rating element
  xml:
    path: /foo/bar.xml
    xpath: /business/rating/@subjective
    state: absent

- name: Set the rating to 11
  xml:
    path: /foo/bar.xml
    xpath: /business/rating
    value: 11

# Retrieve and display the number of nodes
- name: Get count of beers nodes
  xml:
    path: /foo/bar.xml
    xpath: /business/beers/beer
    count: yes
  register: hits

- debug:
    var: hits.count

- name: Add a phonenumber element to the business element
  xml:
    path: /foo/bar.xml
    xpath: /business/phonenumber
    value: 555-555-1234

- name: Add several more beers to the beers element
  xml:
    path: /foo/bar.xml
    xpath: /business/beers
    add_children:
    - beer: Old Rasputin
    - beer: Old Motor Oil
    - beer: Old Curmudgeon

- name: Add a validxhtml element to the website element
  xml:
    path: /foo/bar.xml
    xpath: /business/website/validxhtml

- name: Add an empty validatedon attribute to the validxhtml element
  xml:
    path: /foo/bar.xml
    xpath: /business/website/validxhtml/@validatedon

- name: Add or modify an attribute, add element if needed
  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 attribute value
  xml:
    path: /foo/bar.xml
    xpath: /business/website/validxhtml
    content: attribute
    attribute: validatedon
  register: xmlresp

- name: Show attribute value
  debug:
    var: xmlresp.matches[0].validxhtml.validatedon

- name: Remove all children from the website element (option 1)
  xml:
    path: /foo/bar.xml
    xpath: /business/website/*
    state: absent

- name: Remove all children from the website element (option 2)
  xml:
    path: /foo/bar.xml
    xpath: /business/website
    children: []

# In case of namespaces, like in below XML, they have to be explicitely stated
# NOTE: there's the prefix "x" in front of the "bar", too
#<?xml version='1.0' encoding='UTF-8'?>
#<foo xmlns="http://x.test" xmlns:attr="http://z.test">
#  <bar>
#    <baz xmlns="http://y.test" attr:my_namespaced_attribute="true" />
#  </bar>
#</foo>

- name: Set namespaced '/x:foo/x:bar/y:baz/@z:my_namespaced_attribute' to 'false'
  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
dict
успех
Словарь с исходным выражением xpath, пространствами имён и состоянием.

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

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

Пример:
2
matches
list
при заданном параметре 'print_match'
Найденные совпадения xpath.

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

xmlstring
строка
при заданном параметре 'xmlstring'
XML-строка с результатом.



Статус

Этот модуль помечен как предварительный просмотр, что означает, что он не гарантирует обратную совместимость.

Обслуживание

Этот модуль помечен как сообщество, что означает, что его поддерживает сообщество Ansible. Подробнее см. Обслуживание и поддержка модулей.

Список других модулей, также поддерживаемых сообществом Ansible, см. здесь.

Автор

  • 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.6/modules/xml_module.html

Spec-Zone.ru

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