Ahmed
Ahmed

Reputation: 160

Append element with more than one attribute using xmlstarlet

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

Answers (1)

Jack Fleeting
Jack Fleeting

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

Related Questions