我正在使用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。
有什么建议我做错了吗?
答案 0 :(得分:3)
订单在Augeas树中很重要。在这种情况下,需要在#text
节点和子节点之前设置XML节点属性。
所以你需要的是:
ins #attribute before /files/test.xml/Context/#text
set /files/test.xml/Context/#attribute/allowLinking true
请注意,此更改不是幂等的,因为insert
不是幂等操作。
在Puppet上,你可以使用onlyif
来使这个幂等。