Spec-Zone.ru › Ansible 2.7

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
boolean
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о времени создания, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали.
content
-
    Варианты:
  • атрибут
  • текст
Поиск заданного xpath и получение содержимого.
Этот параметр требует, чтобы xpath был задан.
count
boolean
    Варианты:
  • нет ←
  • да
Поиск заданного xpath и предоставление количества совпадений.
Этот параметр требует, чтобы xpath был задан.
input_type
-
    Варианты:
  • xml
  • yaml ←
Тип входных данных для add_children и set_children.
namespaces
-
Отображение соответствия пространства имён prefix:uri для выражения XPath.
Должен быть dict, а не list элементов.
path
- / обязательно
Путь к файлу, с которым нужно работать. Файл должен существовать.
Этот параметр является обязательным, если не задан xmlstring.

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

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

Примечания

Примечание

  • Используйте параметры --check и --diff при тестировании ваших выражений.
  • Вывод diff автоматически форматируется с отступами, поэтому он может не отражать фактическое содержимое файла, а только его структуру.
  • Этот модуль не обрабатывает сложные выражения xpath, поэтому ограничивайте выражения xpath простыми выражениями.
  • Обратите внимание, что если ваши XML-элементы используют пространства имён, вам нужно использовать параметр namespaces.
  • Префикс пространства имён следует использовать для всех дочерних элементов элемента, где определено пространство имён, если не определено другое пространство имён для них.
  • Дополнительную информацию об этом модуле можно найти на вики-странице сообщества по адресу 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
словарь
успех
Словарь с исходным xpath, пространствами имён и состоянием.

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

Пример:
/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.7/modules/xml_module.html

Spec-Zone.ru

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