【问题标题】:xmlstarlet edit insert syntaxxmlstarlet 编辑插入语法
【发布时间】:2011-10-07 23:14:48
【问题描述】:

我正在尝试使用 xmlstarlet 插入一个新元素,但是当我运行该命令时,它只会列出我要插入的 xml 文件。任何建议都会很棒。

xml ed -s /chkSys/machine/registry -t elem -n key -v "" -i /registry/key -t attr -n value -v "'C:\Program Files\Microsoft SQL Server'" -v path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" --net \\server3\e$\temp\chksys\chksys.xml

##Old##
<?xml version="1.0" encoding="utf-8"?>
<chksys>
    <machine>
        <registry>

       </registry>
    </machine>
</chksys>

##New##
<?xml version="1.0" encoding="utf-8"?>
 <chksys>
    <machine>
       <registry>
           <key value="'C:\Program Files\Microsoft SQL Server'" path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines\Directory\Admin\1075182566\DirectoryName"/>
       </registry>
    </machine>
 </chksys>

【问题讨论】:

    标签: xml xmlstarlet


    【解决方案1】:

    您的命令有点不对劲,您应该在插入时使用完整的密钥路径:

    xml ed --net ^
        -s /chksys/machine/registry -t elem -n key -v "" ^
        -i /chksys/machine/registry/key -t attr -n value ^
          -v "'C:\Program Files\Microsoft SQL Server'" ^
        -i /chksys/machine/registry/key -t attr -n path ^
          -v "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" ^
        OLDFILE > NEWFILE
    

    这会将编辑后的 ​​xml 放入 NEWFILE,如果您想直接更改 OLDFILE,可以使用 --inplace 或 -L 选项。

    xml ed --net --inplace ^
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多