使用 xmlstarlet 追加具有多个属性的元素
Append element with more than one attribute using xmlstarlet
假设我有以下 xml 文件内容:
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
</Context>
所以在我的例子中,我想追加具有相同属性的新元素 Parameter :
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
<Parameter name="n3" value="v3" override="true"/>
</Context>
感谢帮助
有点繁琐,但是可以这样做:
xmlstarlet ed --subnode "//Context" --type elem -n Parameter \
--insert "// Context //Parameter[3]" --type attr --name "name" --value "n3" \
--insert "// Context //Parameter[3]" --type attr --name "value3" --value "v3" \
--insert "// Context //Parameter[3]" --type attr --name "override" --value "false"\
myfile.xml
输出应该是您要查找的内容。
要在 <Context>
之前插入新元素,请使用
xmlstarlet ed -i "//Context" --type elem -n Parameter myfile.xml
假设我有以下 xml 文件内容:
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
</Context>
所以在我的例子中,我想追加具有相同属性的新元素 Parameter :
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
<Parameter name="n3" value="v3" override="true"/>
</Context>
感谢帮助
有点繁琐,但是可以这样做:
xmlstarlet ed --subnode "//Context" --type elem -n Parameter \
--insert "// Context //Parameter[3]" --type attr --name "name" --value "n3" \
--insert "// Context //Parameter[3]" --type attr --name "value3" --value "v3" \
--insert "// Context //Parameter[3]" --type attr --name "override" --value "false"\
myfile.xml
输出应该是您要查找的内容。
要在 <Context>
之前插入新元素,请使用
xmlstarlet ed -i "//Context" --type elem -n Parameter myfile.xml