Spec-Zone.ru › Ansible 2.4

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

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

  • Обзор
  • Требования (для хоста, на котором выполняется модуль)
  • Параметры
  • Примеры
  • Значения возврата
  • Примечания
    • Статус

Обзор

  • Интерфейс, похожий на CRUD, для управления фрагментами XML-файлов.
  • Возможно, вас также заинтересуют краткие руководства с http://www.w3schools.com/xpath/ и https://developer.mozilla.org/en-US/docs/Web/XPath.

Требования (для хоста, на котором выполняется модуль)

  • lxml >= 2.3.0

Параметры

параметр обязательный по умолчанию варианты комментарии
add_children
нет
Добавление дополнительных дочерних элементов к выбранному элементу для заданного xpath.
Дочерние элементы должны быть заданы в списке, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо словарем, где ключ — имя элемента, а значение — значение элемента.
Этот параметр требует, чтобы xpath был задан.
attribute
нет
Атрибут для выбора при использовании параметра value.
Это строка, а не префикс @.
backup
нет нет
  • да
  • нет
Создание резервной копии файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если неправильно его перезаписали.
content
нет
  • attribute
  • text
Поиск заданного xpath и получение содержимого.
Этот параметр требует, чтобы xpath был задан.
count
нет нет
  • да
  • нет
Поиск заданного xpath и получение количества совпадений.
Этот параметр требует, чтобы xpath был задан.
input_type
нет yaml
  • xml
  • yaml
Тип входных данных для add_children и set_children.
namespaces
нет
Сопоставление пространства имен prefix:uri для выражения XPath.
Должно быть dict, а не list элементов.
path
да
Путь к файлу для обработки. Файл должен существовать.
Этот параметр обязателен, если не задан xmlstring.
псевдонимы: dest, file
pretty_print
нет нет
  • да
  • нет
Форматированный вывод XML.
print_match
нет нет
  • да
  • нет
Поиск заданного xpath и вывод всех совпадений.
Этот параметр требует, чтобы xpath был задан.
set_children
нет
Установить дочерние элементы выбранного элемента для заданного xpath.
Удаляет все существующие дочерние элементы.
Дочерние элементы должны быть указаны, как и в add_children.
Этот параметр требует, чтобы xpath был задан.
state
нет present
  • absent
  • present
Установить или удалить выбор XPath (узел(ы), атрибут(ы)).
псевдонимы: ensure
value
нет
Желаемое состояние выбранного атрибута.
Либо строка, либо для сброса значения используется ключевое слово Python None (YAML-эквивалент null).
Элементы по умолчанию без значения (но присутствующие).
Атрибуты по умолчанию — пустая строка.
xmlstring
да
Строка, содержащая XML для обработки.
Этот параметр обязателен, если не задан path.
xpath
нет /
Действительное выражение XPath, описывающее элемент(ы), которые вы хотите изменить.
Действует по корню документа, /, по умолчанию.

Примеры

- 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 attrribute 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
Словарь с исходным выражением XPath, пространствами имен и состоянием.
успех dict {'xpath': 'xpath', 'state=present': None, 'namespaces': ['namespace1', 'namespace2']}
backup_file
Имя резервной копии файла, которая была создана
при backup=да str /path/to/file.xml.1942.2017-08-24@14:16:01~
count
Количество совпадений с XPath.
при заданном параметре 'count' int 2
matches
Найденные совпадения с XPath.
при заданном параметре 'print_match' list
msg
Сообщение, связанное с выполненным действием(ями).
всегда строка
xmlstring
Строка XML результирующего вывода.
при заданном параметре 'xmlstring' строка

Примечания

Примечание

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

Статус

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

Для получения помощи в разработке модулей, если вы заинтересованы, прочтите Информация о сообществе и участие, Тестирование Ansible и Разработка модулей.

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

Spec-Zone.ru

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