【问题标题】:Append element with more than one attribute using xmlstarlet使用 xmlstarlet 附加具有多个属性的元素
【发布时间】:2020-12-19 21:39:31
【问题描述】:

假设我有以下 xml 文件内容:

<Context>
   <Parameter name="n1" value="v1" override="false"/>
   <Parameter name="n2" value="v2" override="false"/>
</Context>

所以在我的情况下,我想添加具有相同属性的新元素 Parameter,如下所示:

<Context>
   <Parameter name="n1" value="v1" override="false"/>
   <Parameter name="n2" value="v2" override="false"/>
   <Parameter name="n3" value="v3" override="true"/>
</Context>

感谢您的帮助

【问题讨论】:

    标签: xml xpath command-line command xmlstarlet


    【解决方案1】:

    有点麻烦,不过可以这样实现:

    xmlstarlet ed --subnode "//Context" --type elem -n Parameter \
    --insert  "// Context //Parameter[3]"  --type attr --name "name" --value "n3" \
    --insert  "// Context //Parameter[3]" --type attr --name "value3" --value "v3" \
    --insert  "// Context //Parameter[3]" --type attr --name "override" --value "false"\
    myfile.xml
    

    输出应该是你要找的。​​p>

    要在&lt;Context&gt; 之前插入一个新元素,请使用

    xmlstarlet ed  -i "//Context" --type elem -n Parameter myfile.xml
    

    【讨论】:

    • 是否可以使命令灵活,可以在文件最后一行之前添加新元素?
    • @Stephan 你的意思是在&lt;n1&gt;&lt;n2&gt;之间插入吗?
    • 我的意思是总是在 之前添加它而不给出索引 [index]
    • 这可能吗?
    猜你喜欢
    • 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
    相关资源
    最近更新 更多