我需要在 xml 檔案中添加大量標簽。該檔案是Openmediavault系統 ( Debian ) config.xml檔案。
具體來說,我需要通過命令列通過SMB共享硬碟。我考慮過通過SSH命令或任務調度程式中的腳本來完成。但我要補充的內容相當廣泛。我怎么能做到?有沒有辦法使用xmlstarlet來做到這一點?我還沒有找到添加這么多標簽的簡單方法。讓我們看看你能不能給我一個想法。
我必須將所有這些標簽放在標簽<smb></smb>內
<share>
<uuid>0be7e06a-a888-436d-8088-5ec63963vf5</uuid>
<enable>1</enable>
<sharedfolderref>626db680-b317-42b9-a312-d30392bd5re4</sharedfolderref>
<comment></comment>
<guest>no</guest>
<readonly>0</readonly>
<browseable>1</browseable>
<recyclebin>1</recyclebin>
<recyclemaxsize>0</recyclemaxsize>
<recyclemaxage>0</recyclemaxage>
<hidedotfiles>1</hidedotfiles>
<inheritacls>1</inheritacls>
<inheritpermissions>0</inheritpermissions>
<easupport>0</easupport>
<storedosattributes>0</storedosattributes>
<hostsallow></hostsallow>
<hostsdeny></hostsdeny>
<audit>0</audit>
<timemachine>0</timemachine>
<extraoptions></extraoptions>
</share>
我嘗試以這種方式添加它,在subnode.xml中,我已將我想要添加的內容插入到共享標簽中,但它不起作用,它向我顯示了 xml 的內容并且不對其進行編輯。
sudo xmlstarlet ed -a "//config/services/smb/shares/" -t elem -n share \ -v "$(xmlstarlet sel -t -c '//share/*' subnode.xml)" config.xml\ | xmlstarlet unesc
uj5u.com熱心網友回復:
使用 XSLT 轉換:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="*">
<xsl:copy><xsl:apply-templates/></xsl:copy>
</xsl:template>
<xsl:template match="smb">
<smb><xsl:copy-of select="document('newContent.xml')"/></smb>
</xsl:template<
</xsl:transform>
第一個模板規則是默認規則;它說復制元素不變。第二條規則為元素覆寫了這個:它說在元素smb中插入一個副本。newContent.xmlsmb
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/434192.html
標籤:xml 命令行 Debian xmlstarlet 开放媒体库
