用xmllint或其他解决方案修改特定节点?

时间:2015-09-02 14:22:15

标签: xml shell aix xmllint

我有一个像这样的xml文件:

<!-- environnement totoserver -->
<envs>
 <env>
  <id>1</id>
  <name>toto</name>
  <ip_server>1.1.1.1</ip_server>
  <state>on</state>
 </env>
 <env>
  <id>2</id> [...]
 </env>

  <!-- environnement tata serveur -->
  <env>[...]
  </env>
  [...]
</envs>

为了找到特定节点的值,我使用xmllint。 有了这个,我尝试修改“toto”环境的状态值。 但是,我找不到正确的命令。

那么,有人知道命令行吗?

如果不可能,我该怎么做?如果可能,不安装包。

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用

xmlstarlet ed -u '/envs/env/state[../name="toto"]' -v "$newvalue" file.xml

如果要妥善保存文件:

xmlstarlet ed --in-place -u ...