我有一个与此类似的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元素的内容,或者在不删除实际节点本身的情况下将其删除? (真实节点包含更多我不想硬编码的属性)
答案 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; #attribute
子节点因此你的命令应该是:
#CDATA