用于将标记插入xml的shell脚本?

时间:2012-07-04 11:51:07

标签: bash shell

我有一个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脚本的新手

1 个答案:

答案 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>