cmprescott.xml

Build Status

ansible-xml

Ansible Modul zur Manipulation von XML-Dateien und -Strings. Dieses Modul befindet sich derzeit in der Entwicklungsphase für Ansible. Es wird voraussichtlich im Rahmen von Ansible 2.4.0 Mitte September veröffentlicht. Daher sollten alle Probleme an ansible gemeldet werden.

Installation

Hinweise

  • Ursprüngliches Modul von @github_rhinception erstellt.
  • Am 2015-05-05 übergab @tbielawa das Projekt an @cmprescott, um Problem #16 zu lösen.
  • Am 2017-08-08 wurde dieses Modul in Ansible integriert.
  • Diese Software ist unter den Bedingungen der GPLv3-Lizenz verfügbar.
  • Hallo, wir haben Unit-Tests!

Was ist XPath?

"XPath verwendet Pfad-Ausdrücke, um Knoten oder Knoten-Mengen in einem XML-Dokument auszuwählen. Der Knoten wird durch das Verfolgen eines Pfades oder von Schritten ausgewählt."

Im Grunde ist es eine Syntax, die es Ihnen ermöglicht, spezifische Elemente oder Attribute in einer XML-Datei auszuwählen.

Erfahren Sie mehr im Mozilla Developer Network

Unittests

In diesem Repository sind auch Unittests enthalten. Verwenden Sie diese zusätzlich zur Travis-CI Konfiguration, wenn Sie weitere Beispiele benötigen.

Beispiele

Gegeben:

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

Entfernen Sie das Attribut subjective des Ratings:

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

Setzen Sie das Rating auf 11:

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

Ermitteln Sie die Anzahl der Bier-Knoten:

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

debug:
  var: hits.count

Fügen Sie ein Element phonenumber zum Element business hinzu. Implizites mkdir -p Verhalten, wo zutreffend (übergeordnete XML-Knoten werden automatisch erstellt):

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

Fügen Sie mehrere Biere zum Bier-Element hinzu, wobei eine vars.yaml Datei mit folgendem Inhalt angenommen wird:

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

Dann würde die Playbook-Syntax so aussehen:

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

Das Gleiche, aber inline:

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

Fügen Sie ein Element validxhtml zum Element website hinzu. Beachten Sie, dass state standardmäßig present ist und value für Elemente standardmäßig null ist. Das Ergebnis ist etwa <website><validxhtml />...</website>:

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

Fügen Sie ein leeres Attribut validatedon zum Element validxhtml hinzu. Dies macht das letzte Beispiel tatsächlich überflüssig, aufgrund des impliziten Verhaltens zur Erstellung von übergeordneten Knoten. Das Ergebnis ist etwa <website><validxhtml validatedon='' />...</website>:

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

(1/2) Entfernen Sie alle Kinder vom Website-Element:

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

(2/2) Entfernen Sie alle Kinder vom Website-Element:

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

Frage? Wenn Sie <beers><child01 /><child02 /></beers> haben,

was passiert, wenn Sie sagen:

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

value wird standardmäßig auf ein Element gesetzt, so dass dies die Kinder-Elemente löschen würde.

Über das Projekt

A module to manage various properties of XML documents

Installieren
ansible-galaxy install cmprescott.xml
Lizenz
gpl-3.0
Downloads
50.8k
Besitzer