寻找一种使用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>
预先感谢
答案 0 :(得分:1)
使用xmlstarlet
,您可以使用以下命令来实现:
xmlstarlet ed -u '//property[name="javax.jdo.option.ConnectionURL"]/value' -v newValue source.xml
这将在newValue
的XML中设置新值source.xml
。
其他信息:
始终使用XML解析器来处理XML文件,而不使用基于文本的实用程序,例如sed
。