Issues adding attribute to XML root node via augeas

荒凉一梦 提交于 2019-12-01 07:24:21

问题


I am using augeas to manipulate XML on some machines. Whereas creating new nodes and also setting a bunch of attributes worked like a charm I'm biting my nails of adding a simple attribute to an XML file. XML looks like the following:

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

I'm no just trying to add allowLinking="true" to the Context root node via

set /files/path/to/my/file.xml/Context/#attribute/allowLinking "true"

Which is unfortunately always failing with

/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/ …

I'm using puppet opensource 3.4.2 with augeas 1.0.0.

Any suggestion what I'm doing wrong?


回答1:


Order matters in the Augeas tree. In that case, XML node attributes need to be set before the #text node and the child nodes.

So what you need is:

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

Note that this change is not idempotent, since insert is not an idempotent operation.

On Puppet, you could use onlyif to make this idempotent.



来源:https://stackoverflow.com/questions/21289801/issues-adding-attribute-to-xml-root-node-via-augeas

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!