cmprescott.xml

ビルドステータス

ansible-xml

Ansibleモジュールは、XMLファイルや文字列の一部を操作するためのものです。このモジュールは現在、Ansibleの開発版にあります。Ansible 2.4.0の一部として9月中旬にリリースされる予定です。そのため、すべての問題はansibleに報告してください。

インストール

  • このモジュールは、バージョン2.3以上のlibxml用のPythonバインディングが必要です。通常は、python-lxmlというパッケージに含まれています。apt-get install python-lxml, yum install python-lxmlまたはpip install lxmlでインストールできます。
  • このモジュールは、Ansible v2.3以下には含まれていません。git clone https://github.com/cmprescott/ansible-xml.gitでインストールするか、ansible-galaxy install cmprescott.xmlでインストールします。正しいインストールパスは、プレイブックのライブラリディレクトリプレイブックのロールディレクトリに含めて、またはAnsibleのモジュールパスです。

ノート

  • このモジュールは、@github_rhinceptionによって作成されました。
  • 2015-05-05に、@tbielawaがプロジェクトを@cmprescottに移管し、issue #16を解決しました。
  • 2017-08-08に、このモジュールはAnsibleに統合されました。
  • このソフトウェアは、GPLv3ライセンスの条件の下で利用可能です。
  • こんにちは、ユニットテストがあります!

XPathとは?

"XPathは、XMLドキュメント内のノードまたはノードセットを選択するために、パス式を使用します。ノードは、パスまたはステップに従って選択されます。"

基本的には、特定の要素や属性をXMLファイルから選択するための構文です。

Mozilla Developer Networkで詳しく学ぶ

ユニットテスト

このリポジトリには、ユニットテストも含まれています。必要に応じて、いくつかの例として、Travis-CIの設定も参照してください。

次の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>

評価要素の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

business要素にphonenumber要素を追加します(該当する場合はmkdir -p動作を暗黙的に行います)。

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"

website要素にvalidxhtml要素を追加します。ここで、stateはデフォルトでpresentであり、valueは要素に対してデフォルトでnullです。結果は<website><validxhtml />...</website>のようになります。

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

validxhtml要素に空のvalidatedon属性を追加します。実際、この最後の例は、暗黙の親ノード作成動作のために冗長になります。結果は<website><validxhtml validatedon='' />...</website>のようになります。

(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.xml
ライセンス
gpl-3.0
ダウンロード
50.8k
所有者