XMLSTARLET替换XML节点值



我使用xmlstarlet是新的。我想知道如何使用XMLSTARLET更改XML节点的值。

我尝试了一些东西。XMLSTARLET ED -INPLACE -U'/file_input/uri''字符串(" s3://my_source")'template.xml> output.xml

不起作用。

我的预期输出为 s3://my_source s3://mydestination 。我想更改 source_path destinaty_path node。

<?xml version="1.0" encoding="UTF-8"?>
<job version="2.10.8">
  <input>
    <deblock_enable>Auto</deblock_enable>
    <deblock_strength>0</deblock_strength>
    <no_psi>false</no_psi>
    <order>1</order>
    <timecode_source>zerobased</timecode_source>
    <file_input>
      <certificate_file nil="true"/>
      <password>upass</password>
      <uri>source_path</uri>
      <username>uname</username>
    </file_input>
    <file_group_settings>
      <rollover_interval nil="true"/>
      <destination>
        <password>upass</password>
        <username>uname</username>
        <uri>destination_path</uri>
      </destination>
    </file_group_settings>
  </input>
</job>

非常感谢

with xmlstarlet:

xmlstarlet edit 
           --update "//job/input/file_input/uri" 
           --value 's3://my_source' 
           --update "//job/input/file_group_settings/destination/uri" 
           --value 's3://mydestination' file.xml

如果要编辑file.xml Inploph,请添加选项-L


请参阅:xmlstarlet edit --help

最新更新