cmprescott.xml

ansible-xml

Moduł Ansible do manipulacji fragmentami plików XML oraz ciągami XML. Moduł ten jest obecnie w wersji deweloperskiej Ansible. Ma zostać wydany w wersji Ansible 2.4.0 w połowie września. Wszystkie problemy należy zgłaszać do ansible.

Instalacja

  • Ten moduł wymaga Pythonowych powiązań do biblioteki libxml w wersji 2.3 lub nowszej. Zwykle znajduje się w pakiecie o nazwie python-lxml. Zainstaluj za pomocą apt-get install python-lxml, yum install python-lxml lub pip install lxml.
  • Ten moduł NIE jest dołączony do Ansible w wersji 2.3 i starszych. Zainstaluj go za pomocą git clone https://github.com/cmprescott/ansible-xml.git, lub ansible-galaxy install cmprescott.xml. Prawidłowe ścieżki instalacji to: katalog biblioteki w playbooku, katalog ról w playbooku i dodanie do playbooku, lub ścieżki modułów Ansible.

Uwagi

  • Oryginalny moduł stworzony przez @github_rhinception.
  • W dniu 2015-05-05, @tbielawa przekazał projekt do @cmprescott w celu rozwiązania problemu #16.
  • W dniu 2017-08-08, ten moduł został scalony do Ansible.
  • Oprogramowanie jest dostępne na zasadach licencji GPLv3.
  • Cześć, mamy testy jednostkowe!

Co to jest XPath?

"XPath używa wyrażeń ścieżkowych do wyboru węzłów lub zbiorów węzłów w dokumencie XML. Węzeł jest wybierany przez podążanie ścieżką lub krokami."

W skrócie, to składnia, która pozwala na wybór określonych, lub zbioru, elementów lub atrybutów w pliku XML.

Dowiedz się więcej w sieci Mozilla Developer Network

Testy jednostkowe

W tym repozytorium znajdują się również Testy jednostkowe. Odnies się do nich, oprócz konfiguracji Travis-CI, jeśli potrzebujesz więcej przykładów.

Przykłady

Dany plik XML:

<?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>

Usuń atrybut subjective z elementu rating:

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

Ustaw wartość rating na 11:

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

Zlicz węzły piw:

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

debug:
  var: hits.count

Dodaj element phonenumber do elementu business. Domyślne zachowanie mkdir -p tam, gdzie jest to stosowane (rodzicowskie węzły XML tworzone automatycznie):

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

Dodaj kilka nowych piw do elementu beers, przy założeniu, że istnieje plik vars.yaml z:

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

Wówczas składnia playbooka wyglądałaby następująco:

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

To samo, ale w jednej linijce:

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

Dodaj element validxhtml do elementu website. Zauważ, że state domyślnie wynosi present, a value domyślnie wynosi null dla elementów. Wynik to coś w rodzaju <website><validxhtml />...</website>:

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

Dodaj pusty atrybut validatedon do elementu validxhtml. To właściwie sprawia, że ostatni przykład jest zbędny z powodu domyślnego tworzenia rodzica. Wizualizacja wyniku to coś w rodzaju <website><validxhtml validatedon='' />...</website>:

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

(1/2) Usuń wszystkie dzieci z elementu website:

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

(2/2) Usuń wszystkie dzieci z elementu website:

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

Pytanie? Jeśli masz <beers><child01 /><child02 /></beers>

Co się stanie, jeśli wpiszesz:

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

value domyślnie wynosi element, więc ten zapis usunie elementy dzieci.

O projekcie

A module to manage various properties of XML documents

Zainstaluj
ansible-galaxy install cmprescott.xml
Licencja
gpl-3.0
Pobrania
50.8k
Właściciel