XMLファイルに新しい要素を追加しようとしました。
ソースファイル:
<levela>
<levelb>
</levelb>
</levela>
次のような結果を得ようとしています。
<levela>
<levelb>
<levelc>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
</levelc>
</levelb>
</levela>
私の現在の試みは次のとおりです
xmlstarlet ed -a /levela/lelvelb -t elem -n levelc -v "" \
-i //levelc -t elem -n "element1" -v "value1" \
file.xml
しかし、私のファイルは更新されません。
ベストアンサー1
通話にタイプミスxmlstarlet
()がありますlelvelb
。
xmlstarlet ed -a /levela/lelvelb -t elem -n levelc -v "" \
-i //levelc -t elem -n "element1" -v "value1" \
file.xml
子ノードを追加するには、次の-s
操作を使用する必要があります。-a
-i
xmlstarlet ed -s /levela/levelb -t elem -n levelc -v "" \
-s //levelc -t elem -n "element1" -v "value1" \
file.xml
これは生産します
<?xml version="1.0"?>
<levela>
<levelb>
<levelc><element1>value1</element1><element2>value2</element2></levelc></levelb>
</levela>
-s
必要に応じて他のタスクを追加できます。 NULL-v
値を削除することもできますlevelc
。
file.xml
標準出力に変換結果を取得するのではなく、独自に変更するには、次のオプションを追加します。xmlstarlet
-L
ed
xmlstarlet ed -L -s /levela/levelb -t elem -n levelc -v "" \
-s //levelc -t elem -n "element1" -v "value1" \
file.xml