Spec-Zone.ru › Ansible

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

Примечание

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

Возможно, эта коллекция уже установлена, если вы используете пакет 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

псевдонимы: 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

псевдонимы: ensure

string

Задать или удалить выбранные узлы XPath (узел/узлы, атрибут/атрибуты).

Варианты:

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

strip_cdata_tags

boolean

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

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

Варианты:

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

value

any

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

Строка или, чтобы сбросить значение, ключевое слово Python None (эквивалент YAML — null).

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

По умолчанию атрибуты имеют пустую строку в качестве значения.

xmlstring

string

Строка, содержащая XML, с которым нужно работать.

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

xpath

string

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

По умолчанию выполняется поиск в корне документа, /.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

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

diff_mode

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

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

Примечания

Примечание

  • При проверке выражений используйте параметры --check и --diff.
  • Вывод различий автоматически форматируется для удобного чтения, поэтому он может не отражать фактическое содержимое файла, а показывать только его структуру.
  • Этот модуль не обрабатывает сложные выражения 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"  # must quote to ensure it is parsed as string

# 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
          # Value
          +value: unreal
          # 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

Возвращаемые значения

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

Ключ

Описание

actions

dictionary

Словарь с исходными значениями xpath, namespaces и state.

Возвращается: при успешном выполнении

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

count

integer

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

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

Пример: 2

matches

list / elements=string

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

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

xmlstring

string

Строка XML с результатом выполнения.

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

Авторы

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

Ссылки на коллекцию

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

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

Spec-Zone.ru

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