假设我有这个包含这些内容的test.xml文件
<d>
<p>
<n>hi</n>
<r>
<s>1.0</s>
</r>
</p>
<p>
<n>hello</n>
<r>
<s>1.0</s>
</r>
</p>
</d>
我想添加一个新的&lt; s&gt; 2.0&lt; / s&gt;对于“hello”对象,如下所示。
<d>
<p>
<n>hi</n>
<r>
<s>1.0</s>
</r>
</p>
<p>
<n>hello</n>
<r>
<s>1.0</s>
<s>2.0</s>
</r>
</p>
</d>
我必须使用shell脚本执行此操作。有一种方法可以搜索XML DOM并使用此处http://www.technomancy.org/xml/add-a-subnode-command-line-xmlstarlet/给出的xmlstarlet添加标签。但这仅描述了基于属性值向某些节点添加新标记。我没有任何属性。我该怎么做 ?有没有办法用grep做到这一点?
答案 0 :(得分:3)
xmlstarlet ed -a '//p[n="hello"]/r/s' -t elem -n s -v 2.0 input.xml
ed
==&gt;修改-a
==&gt;附加-t
==&gt;输入-n
==&gt;名称-v
==&gt;值