xmlstarlet追加并插入新的行值

问题描述 投票:2回答:1

我想知道如何使用xmlstarlet添加新行。

我的目标是在job / input / file_input / uri之后添加一个<audio>track_01</audio>

<?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>

如何使用以下代码插入新行?

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

非常感谢你

xml xmlstarlet
1个回答
1
投票

我建议在所需的节点/元素之后追加(--append)一个名为audio(--type elem)和value(--name "audio")的新元素(--value "track_01"):

xmlstarlet edit \
           --update "//job/input/file_input/uri" \
           --value 's3://my_source' \
           --update "//job/input/file_group_settings/destination/uri" \
           --value 's3://mydestination' \
           --append "//job/input/file_input/uri" \
           --type elem --name "audio" --value "track_01" file.xml

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


见:xmlstarlet edit --help

© www.soinside.com 2019 - 2024. All rights reserved.