【发布时间】:2013-09-04 00:55:19
【问题描述】:
我正在使用适用于 Puppet 3.2 的 Augeas 工具,并且我正在尝试创建一个 XML 文件。我希望能够将多个具有相同名称的字段添加到我的 XML 文档中。例如,我想将 node2/location2 与 node1/location1 分开,方法是将其放在自己的“节点”字段中。这是我的代码:
augeas { "update template":
lens => "Xml.lns",
require => File["${buildpath}/tempfile.xml"],
incl => "${buildpath}/tempfile.xml",
changes => [
"set member/acceptors[#attribute]/node[#attribute]/nodeIdentity[#attribute]/#text node2",
"set member/acceptors/node/nodeLocation[#attribute]/#text location2",
"set member/acceptors/node/nodeIdentity[#attribute]/#text node1",
"set member/acceptors/node/nodeLocation[#attribute]/#text location1"
],
}
这是我得到的 XML 输出:
<member>
<acceptors>
<node>
<nodeIdentity>node2</nodeIdentity>
<nodeLocation>location2</nodeLocation>
<nodeIdentity>node1</nodeIdentity>
<nodeLocation>location1</nodeLocation>
</node>
</acceptors>
</member>
这是我想要的输出:
<member>
<acceptors>
<node>
<nodeIdentity>node2</nodeIdentity>
<nodeLocation>location2</nodeLocation>
</node>
<node>
<nodeIdentity>node1</nodeIdentity>
<nodeLocation>location1</nodeLocation>
</node>
</acceptors>
</member>
我尝试将 [#attribute] 添加到 node1 行,如下所示:
"set member/acceptors/node[#attribute]/nodeIdentity[#attribute]/#text node1",
但是“node1”没有被输出。有什么建议吗?
【问题讨论】:
-
我遇到过这个问题,我认为
augeas不支持多个数组[]在一个set中。 -
哦,真的吗?这太糟糕了。有没有一个简单的替代方法来实现这一点?
-
恐怕没有简单的解决方案。您必须使用模板并填写必要的属性...
-
那我只做模板!谢谢:)