通过augeas向XML根节点添加属性的问题

时间:2014-01-22 17:28:55

标签: xml puppet augeas

我正在使用augeas在某些机器上操作XML。虽然创建新节点并设置一堆属性就像一个魅力,但我正在咬我的指甲,为XML文件添加一个简单的属性。 XML如下所示:

<?xml version="1.0"?>
<Context>
   <WatchedResource></WatchedResource>
</Context>

我不只是尝试通过

allowLinking="true"添加到Context根节点
set /files/path/to/my/file.xml/Context/#attribute/allowLinking "true"

遗憾的是,

总是失败
/error = "put_failed"
/error/path = "/files/path/to/my/file.xml/Context"
/error/lens = "/usr/share/augeas/lenses/dist/xml.aug:134.10-.73:"
/error/message = "Failed to match \n    { /#attribute/ }?({ /#text/ …

我正在使用puppet opensource 3.4.2和augeas 1.0.0。

有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:3)

订单在Augeas树中很重要。在这种情况下,需要在#text节点和子节点之前设置XML节点属性。

所以你需要的是:

ins #attribute before /files/test.xml/Context/#text
set /files/test.xml/Context/#attribute/allowLinking true

请注意,此更改不是幂等的,因为insert不是幂等操作。

在Puppet上,你可以使用onlyif来使这个幂等。