我有一个xml
<Data>
<employee>
<name>emp1</name>
<id>1</id>
</employee>
</Data>
假设我有模板,其中我更改了值并添加到以前的xml
<employee>
<name>##name##</name>
<id>##empid##</id>
<employee>
我用## name ##和## empid ##替换原始值并放入原始xml 的名称= EMP2 EID = 2 所以在那之后它就是
<Data>
<employee>
<name>emp1</name>
<id>1</id>
</employee>
<employee>
<name>emp2</name>
<id>2</id>
</employee>
</Data>
我尝试使用行号来插入标签
line=$(cat data.xml | grep -n '</Data>' | grep -o '^[0-9]*')
和
尝试使用
将文本放入原始xml中sed $line\ i\<text to be insert in original xml>
但是它给了xml内容一些错误,帮助将被appriciated,因为我是shell脚本的新手
答案 0 :(得分:2)
您可以使用xmlstarlet
更新template.xml
(格式错误)
$ cat template.xml
<employee>
<name>##name##</name>
<id>##empid##</id>
</employee>
$ xmlstarlet ed -u //name -v emp2 -u //id -v 2 template.xml
<?xml version="1.0"?>
<employee>
<name>emp2</name>
<id>2</id>
</employee>