<xml>
<block>
<el name="a">92346</el>
<el name="b">lorem</el>
</block>
<block>
<el name="a">89753</el>
<el name="b">ipsum</el>
</block>
</xml>
我想在每个<el name="c">0</el>
中使用Linux shell脚本插入<block>
元素:
<xml>
<block>
<el name="a">92346</el>
<el name="b">lorem</el>
<el name="c">0</el>
</block>
<block>
<el name="a">89753</el>
<el name="b">ipsum</el>
<el name="c">0</el>
</block>
</xml>
我可以使用XmlStarlet附加元素:
xmlstarlet ed -a '/xml/block/el[@name="b"]' \
--type 'elem' -n 'el' -v 0
<el>
元素的XPath表达式是什么
没有name
属性?xml ed
命令?答案 0 :(得分:5)
/xml/block/el[not(@name)]
您不能直接插入具有属性的元素,但是从那时起 每个编辑操作都按顺序执行,你可以插入一个 元素然后添加一个属性。
xmlstarlet ed -a '/xml/block/el[@name="b"]' \
-t 'elem' -n 'el' -v 0 \
-i '/xml/block/el[not(@name)]' \
-t 'attr' -n 'name' -v 'c'