xml

Статус сборки

ansible-xml

Модуль Ansible для работы с частями XML файлов и строк. Этот модуль в настоящее время находится в версии разработки Ansible. Он должен быть выпущен как часть Ansible 2.4.0 в середине сентября. Все проблемы следует сообщать в ansible.

Установка

Примечания

  • Исходный модуль создан @github_rhinception.
  • 2015-05-05, @tbielawa передал проект @cmprescott для решения проблемы №16.
  • 2017-08-08, этот модуль был объединен с Ansible.
  • Этот софт доступен на условиях лицензии GPLv3.
  • Приветствую, у нас есть модульные тесты!

Что такое XPath?

"XPath использует выражения пути для выбора узлов или наборов узлов в XML документе. Узел выбирается следуя пути или шагам."

По сути, это синтаксис, который позволяет вам выбирать конкретные или коллекции элементов или атрибутов в XML файле.

Узнайте больше на сайте Mozilla Developer Network

Модульные тесты

Также в этом репозитории имеются модульные тесты. Ознакомьтесь с ними, а также с конфигурацией Travis-CI, если вам нужны дополнительные примеры.

Примеры

Дано:

<?xml version='1.0' encoding='UTF-8'?>
<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>

Удалить атрибут subjective из элемента оценки:

xml:
  path: /foo/bar.xml
  xpath: /business/rating/@subjective
  state: absent

Установить рейтинг на 11:

xml:
  path: /foo/bar.xml
  xpath: /business/rating
  value: 11

Получить количество узлов пив:

xml:
  path: /foo/bar.xml
  xpath: /business/beers/beer
  count: yes
register: hits

debug:
  var: hits.count

Добавить элемент phonenumber к элементу business (автоматическое создание родительских узлов, если необходимо):

xml:
  path: /foo/bar.xml
  xpath: /business/phonenumber
  value: 555-555-1234

Добавить несколько новых видов пива в элемент beers, предполагая наличие файла vars.yaml с:

new_beers:
    - beer: "Old Rasputin"
    - beer: "Old Motor Oil"
    - beer: "Old Curmudgeon"

Тогда синтаксис плейбука будет выглядеть так:

xml:
  path: /foo/bar.xml
  xpath: /business/beers
  add_children: '{{ new_beers }}'

То же самое, но делать это в строке:

xml:
  path: /foo/bar.xml
  xpath: /business/beers
  add_children:
      - beer: "Old Rasputin"
      - beer: "Old Motor Oil"
      - beer: "Old Curmudgeon"

Добавить элемент validxhtml к элементу website. Обратите внимание, что state по умолчанию равен present, а value по умолчанию равен null для элементов. Результат будет что-то вроде <website><validxhtml />...</website>:

xml:
  path: /foo/bar.xml
  xpath: /business/website/validxhtml

Добавить пустой атрибут validatedon к элементу validxhtml. Это, на самом деле, делает последний пример избыточным из-за поведения автоматического создания родительского узла. Результат будет что-то вроде <website><validxhtml validatedon='' />...</website>:

xml:
  path: /foo/bar.xml
  xpath: /business/website/validxhtml/@validatedon

(1/2) Удалить всех детей из элемента website:

xml:
  path: /foo/bar.xml
  xpath: /business/website/*
  state: absent

(2/2) Удалить всех детей из элемента website:

xml:
  path: /foo/bar.xml
  xpath: /business/website
  children: []

Вопрос? Если у вас есть <beers><child01 /><child02 /></beers>

Что произойдет, если вы скажете:

xml:
  path: /foo/bar.xml
  xpath: /beers

value по умолчанию равен элементу, поэтому это удалит дочерние элементы.

О проекте

A module to manage various properties of XML documents

Установить
ansible-galaxy install cmprescott/ansible-xml
Лицензия
gpl-3.0
Загрузки
50755
Владелец