Spec-Zone.ru › Ansible 2.8

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

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

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

Описание

  • Интерфейс типа 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
логическое значение
добавлено в 2.8
    Варианты:
  • нет ←
  • да
Добавление дополнительных дочерних элементов после последнего выбранного элемента для заданного xpath.
Дочерние элементы должны быть указаны в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Этот параметр требует установки параметра xpath.
insertbefore
логическое значение
добавлено в 2.8
    Варианты:
  • нет ←
  • да
Добавление дополнительных дочерних элементов перед первым выбранным элементом для заданного xpath.
Дочерние элементы должны быть указаны в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Этот параметр требует установки параметра xpath.
namespaces
словарь
Отображение сопоставлений пространств имен prefix:uri для выражения XPath.
Должен быть dict, а не list элементов.
path
путь / обязательный
Путь к файлу, над которым нужно произвести операцию.
Этот файл должен существовать заранее.
Этот параметр обязателен, если не указан xmlstring.

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

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

Примечания

Примечание

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

См. также

См. также

Xml module development community 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
  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

# Example where parent XML nodes are created automatically
- 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 several more beers to the 'beers' element and add them before the 'Rochefort 10' element
  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
  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 an element's attribute values
  xml:
    path: /foo/bar.xml
    xpath: /business/website/validxhtml
    content: attribute
  register: xmlresp

- name: Show an 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 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'
  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, именами пространств имён и состоянием.

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

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

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

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

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



Статус

  • Данный модуль не гарантирует обратную совместимость интерфейса. [превью]
  • Этот модуль поддерживается сообществом 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.8/modules/xml_module.html

Spec-Zone.ru

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