使用特定节点(Shell脚本)更新XML文件中的文本

时间:2018-07-23 20:27:16

标签: xml shell sed

寻找一种使用Shell更改xml文件中的node值的方法。

xml文件中的数据示例:

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:postgresql://myhost/metastore</value>

</property>

基于<name>节点,更改<value>节点中的文本。是否可以通过sed或xmlstarlet实现。

我想要的是基于<name> = javax.jdo.option.ConnectionURL,将<value>更改为Banana,因此输出为:

<property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>Banana</value>

 </property>

预先感谢

1 个答案:

答案 0 :(得分:1)

使用xmlstarlet,您可以使用以下命令来实现:

xmlstarlet ed -u '//property[name="javax.jdo.option.ConnectionURL"]/value' -v newValue source.xml

这将在newValue的XML中设置新值source.xml

其他信息:
始终使用XML解析器来处理XML文件,而使用基于文本的实用程序,例如sed