cmprescott.xml

Estado de Construcción

ansible-xml

Módulo de Ansible para manipular partes de archivos y cadenas XML. Este módulo está actualmente en la versión de desarrollo de Ansible. Se espera que se libere como parte de Ansible 2.4.0 a mediados de septiembre. Por lo tanto, todos los problemas deben ser reportados a ansible.

Instalación

Notas

¿Qué es XPath?

"XPath utiliza expresiones de ruta para seleccionar nodos o conjuntos de nodos en un documento XML. El nodo se selecciona siguiendo una ruta o pasos."

Básicamente, es una sintaxis que te permite seleccionar un elemento específico o un conjunto de elementos o atributos en un archivo XML.

Aprende más en la Red de Desarrolladores de Mozilla

Pruebas Unitarias

También se incluyen en este repositorio Pruebas Unitarias. Consulta estas, además de la configuración de Travis-CI, si necesitas más ejemplos.

Ejemplos

Dado:

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

Eliminar el atributo subjective del elemento de calificación:

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

Establecer la calificación en 11

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

Obtener la cantidad de nodos de cerveza

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

debug:
  var: hits.count

Agregar un elemento phonenumber al elemento business. Comportamiento implícito de mkdir -p donde sea aplicable (los nodos XML padre se crean automáticamente).

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

Agregar varias cervezas al elemento de cervezas, asumiendo un archivo vars.yaml con:

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

Entonces la sintaxis del playbook se vería así:

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

Lo mismo, pero hacerlo en línea

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

Agregar un elemento validxhtml al elemento website. Ten en cuenta que state es present por defecto, y value se establece en null para los elementos. El resultado es algo como <website><validxhtml />...</website>

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

Agregar un atributo vacío validatedon al elemento validxhtml. Esto hace que el último ejemplo sea redundante debido al comportamiento de creación implícita del nodo padre. El resultado es algo como <website><validxhtml validatedon='' />...</website>

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

(1/2) Eliminar todos los hijos del elemento de website:

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

(2/2) Eliminar todos los hijos del elemento de website:

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

Pregunta: Si tienes <beers><child01 /><child02 /></beers>

¿Qué pasa si dices:

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

value se establece por defecto en un elemento, así que esto borrará los elementos hijos.

Acerca del proyecto

A module to manage various properties of XML documents

Instalar
ansible-galaxy install cmprescott.xml
Licencia
gpl-3.0
Descargas
50.8k
Propietario