如何通过 sed 编辑复杂的 xml 文件

how do edit complex xml file by sed

这是 xml 文件的结构:

  <test.file>
    <set name="parameter1" serializeAs="String">
      <value>True</value>
    </set>
    <set name="parameter2" serializeAs="String">
      <value>True</value>
    </set>
  </test.file>

我想将 Parameter2 的值从 True 编辑为 False 当我使用这个命令时: xmlstarlet ed -u //test.\file/set/value -v 假文件名 它正在将两个值从 True 更新为 False。 如何控制仅编辑名称="parameter2"?

的值

谢谢你!

编辑: 由于 OP 要求对特定标签的值进行更改,因此根据它更改了代码。

xmlstarlet ed -u "//test.file/set[@name='parameter2']/value" -v "false"  Input_file.xml

以下 xmlstarlet 命令可能对您有所帮助。

xmlstarlet ed -u "/test.file/set/value" -v "false"  Input_file.xml

要对 xml 文件本身进行就地更新,请使用以下内容。

xmlstarlet ed -L -u  "/test.file/set/value" -v "false"  Input_file.xml