cmprescott.xml

构建状态

ansible-xml

这是一个用于操作 XML 文件和字符串的 Ansible 模块。该模块目前处于 Ansible 的开发版本中,预计将在 九月中旬 作为 Ansible 2.4.0 的一部分发布。因此,所有问题应报告给 ansible

安装

  • 该模块需要 Python 的 libxml 版本 2.3 或更高版本的绑定。通常在名为 python-lxml 的包中。可以使用 apt-get install python-lxmlyum install python-lxmlpip install lxml 来安装。
  • 该模块包含在 Ansible v2.3 及以下版本中。可以使用 git clone https://github.com/cmprescott/ansible-xml.git, 或 ansible-galaxy install cmprescott.xml 进行安装。有效的安装路径可以是 剧本的库目录剧本的角色目录并包含在剧本中, 或 Ansible 的模块路径

备注

什么是 XPath?

"XPath 使用路径表达式在 XML 文档中选择节点或节点集合。 通过遵循路径或步骤来选择节点。"

基本上,它是一种语法,允许您在 XML 文件中选择特定的或一组元素或属性。

在 Mozilla 开发者网络了解更多

单元测试

该存储库中还包含 单元测试。如果您需要更多示例,请参考这些内容,以及 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>

移除 rating 元素的 subjective 属性:

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

将 rating 设置为 11

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

获取 beers 节点的计数

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

debug:
  var: hits.count

business 元素添加 phonenumber 元素,适用时隐式 mkdir -p 行为(自动创建父 XML 节点)

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

假设有一个 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 默认为 presentvalue 默认为 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
拥有者