Reputation: 160
Let say I have the following xml file content:
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
</Context>
So In my case I want to append new element Parameter with same attributes like this :
<Context>
<Parameter name="n1" value="v1" override="false"/>
<Parameter name="n2" value="v2" override="false"/>
<Parameter name="n3" value="v3" override="true"/>
</Context>
Thanks for help
Upvotes: 2
Views: 729
Reputation: 24930
It's a little cumbersome, but it can be done like this:
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
The output should be what you're looking for.
To insert a new element before <Context>
use
xmlstarlet ed -i "//Context" --type elem -n Parameter myfile.xml
Upvotes: 1