Puppet Augeas - 无法更新包含CDATA的xml节点中的值

时间:2015-08-04 12:50:21

标签: xml puppet augeas

我有一个与此类似的xml文档:

<?xml version="1.0" encoding="UTF-8"?>
<example>
    <member name="dbsettings">
        <node name="username"><![CDATA[someusername]]></node>
        <node name="password"><![CDATA[mypassword]]></node>
    </member>
    <member name="sitesettings">
        <node name="title"><![CDATA[just a title]]></node>
    </member>
</example>

我尝试使用以下augeas命令在puppet中更新这些设置:

set example/member[#attributes/name='dbsettings']/node[#attributes/name='username']/#text anotherusername

我期望它做的是用&#34;另一个用户名&#34;替换节点的全部内容。相反,它只是附加它导致:

<node name="username"><![CDATA[someusername]]>anotherusername</node>

如何使用augeas选择和更新CDATA元素的内容,或者在不删除实际节点本身的情况下将其删除? (真实节点包含更多我不想硬编码的属性)

1 个答案:

答案 0 :(得分:3)

Augtool可以告诉你树实际上是什么样的:

$("#newstaggered-carousel input[name='otherCityInputField']").on('change',function() { 
    console.log('changed');
});

这显示了两件事:

  • 属性的语法是$ augtool -At "Xml incl /test.xml" -r . augtool> set /augeas/context /files/test.xml augtool> print example/member[#attribute/name='dbsettings']/node[#attribute/name='username'] /files/test.xml/example/member[1]/node[1] /files/test.xml/example/member[1]/node[1]/#attribute /files/test.xml/example/member[1]/node[1]/#attribute/name = "username" /files/test.xml/example/member[1]/node[1]/#CDATA = "someusername" ,没有&#39;
  • CDATA存储在#attribute子节点

因此你的命令应该是:

#CDATA