Spec-Zone.ru › Ansible

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

Примечание

Этот модуль является частью коллекции community.general (версия 9.5.0).

У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования, см. Требования для подробностей.

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

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

Описание

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

Требования

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

  • lxml >= 2.3.0

Параметры

Параметр

Комментарии

add_children

list / elements=any

Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) к выбранному элементу для данного xpath.

Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо хешем, где ключ — это имя элемента, а значение — значение элемента.

Для этого параметра необходимо установить xpath.

attribute

any

Атрибут для выбора при использовании параметра value.

Это строка, не начинающаяся с @.

backup

boolean

Создать резервную копию файла, включая информацию о временной метке, чтобы можно было восстановить исходный файл, если он был случайно поврежден.

Варианты:

  • false ← (по умолчанию)
  • true

content

string

Поиск данного xpath и получение содержимого.

Для этого параметра необходимо установить xpath.

Варианты:

  • "attribute"
  • "text"

count

boolean

Поиск данного xpath и предоставление количества совпадений.

Для этого параметра необходимо установить xpath.

Варианты:

  • false ← (по умолчанию)
  • true

input_type

string

Тип входных данных для add_children и set_children.

Варианты:

  • "xml"
  • "yaml" ← (по умолчанию)

insertafter

boolean

Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) после последнего выбранного элемента для данного xpath.

Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо хешем, где ключ — это имя элемента, а значение — значение элемента.

Для этого параметра необходимо установить xpath.

Варианты:

  • false ← (по умолчанию)
  • true

insertbefore

boolean

Добавить дополнительный(-ые) дочерний(-ие) элемент(-ы) перед первым выбранным элементом для данного xpath.

Дочерние элементы должны быть заданы в виде списка, и каждый элемент может быть либо строкой (например, children=ansible для добавления пустого <ansible/> дочернего элемента), либо хешем, где ключ — это имя элемента, а значение — значение элемента.

Для этого параметра необходимо установить xpath.

Варианты:

  • false ← (по умолчанию)
  • true

namespaces

dictionary

Сопоставление пространств имен prefix:uri для выражения XPath.

Должен быть dict, а не list элементов.

Значение по умолчанию: {}

path

aliases: dest, file

path

Путь к файлу, с которым нужно работать.

Этот файл должен существовать заранее.

Этот параметр обязателен, если не указан xmlstring.

pretty_print

boolean

Форматированный вывод XML.

Варианты:

  • false ← (по умолчанию)
  • true

print_match

boolean

Поиск данного xpath и вывод всех совпадений.

Для этого параметра необходимо установить xpath.

Варианты:

  • false ← (по умолчанию)
  • true

set_children

list / elements=any

Установить дочерний(-ие) элемент(-ы) выбранного элемента для данного xpath.

Удаляет все существующие дочерние элементы.

Дочерние элементы должны быть указаны, как в add_children.

Для этого параметра необходимо установить xpath.

state

aliases: ensure

string

Установить или удалить выбор XPath (узел(узлы), атрибут(ы)).

Варианты:

  • "absent"
  • "present" ← (по умолчанию)

strip_cdata_tags

boolean

Удалить теги CDATA, окружающие текстовые значения.

Обратите внимание, что это может повредить ваш XML-файл, если текстовые значения содержат символы, которые могут быть интерпретированы как XML.

Варианты:

  • false ← (по умолчанию)
  • true

значение

любое

Желаемое состояние выбранного атрибута.

Это может быть строка, или для сброса значения используется ключевое слово Python None (эквивалент в YAML, null).

Элементы по умолчанию не имеют значения (но присутствуют).

Атрибуты по умолчанию — пустая строка.

xmlstring

строка

Строка, содержащая XML, над которым нужно произвести операцию.

Этот параметр обязателен, если не задан path.

xpath

строка

Действительное выражение XPath, описывающее элемент(ы), которые нужно изменить.

Обычно работает с корнем документа, /.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в check_mode и возвращать прогноз изменений без модификации целевого объекта.

diff_mode

Поддержка: полная

Возвращает детали изменений (или возможных изменений в check_mode) в режиме сравнения.

Примечания

Примечание

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

См. также

См. также

Wiki-страница модуля 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: true
  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: true
    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
    set_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'

- name: Adding building nodes with floor subnodes from a YAML variable
  community.general.xml:
    path: /foo/bar.xml
    xpath: /business
    add_children:
      - building:
          # Attributes
          name: Scumm bar
          location: Monkey island
          # Subnodes
          _:
            - floor: Pirate hall
            - floor: Grog storage
            - construction_date: "1990"  # Only strings are valid
      - building: Grog factory

# Consider this XML for following example -
#
# <config>
#   <element name="test1">
#     <text>part to remove</text>
#   </element>
#   <element name="test2">
#     <text>part to keep</text>
#   </element>
# </config>

- name: Delete element node based upon attribute
  community.general.xml:
    path: bar.xml
    xpath: /config/element[@name='test1']
    state: absent

Значения возврата

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

Ключ

Описание

действия

словарь

Словарь с исходным xpath, пространствами имён и состоянием.

Возвращается: при успехе

Пример: {"namespaces": ["namespace1", "namespace2"], "state=present": null, "xpath": "xpath"}

backup_file

строка

Имя созданного файла резервной копии

Возвращается: при backup=true

Пример: "/path/to/file.xml.1942.2017-08-24@14:16:01~"

количество

целое число

Количество совпадений xpath.

Возвращается: при задании параметра ‘count’

Пример: 2

совпадения

список / элементы=строка

Найденные совпадения xpath.

Возвращается: при задании параметра ‘print_match’

сообщение

строка

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

Возвращается: всегда

xmlstring

строка

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

Возвращается: при задании параметра ‘xmlstring’

Авторы

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

Ссылки на сборку

  • Система отслеживания ошибок
  • Репозиторий (исходные коды)
  • Задайте вопрос
  • Отправить отчет об ошибке
  • Запросить новую функцию
  • Общение

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

Spec-Zone.ru

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