我一直在嘗試向 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
根據需要添加其他操作。您也可以刪除 的空-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