使用XMLStarlet添加2个类似的XML子节点和值
我想在Azure DevOps中的Bash任务中使用XMLStartNet来编辑下面的XML使用XMLStarlet添加2个类似的XML子节点和值,xml,bash,xmlstarlet,Xml,Bash,Xmlstarlet,我想在Azure DevOps中的Bash任务中使用XMLStartNet来编辑下面的XML <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <PostFlow name="PostFlow"> <Request/> <Response/> <
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxyEndpoint name="default">
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
这里怎么了
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step' -t elem -n "Name" -v "FC-SpikeArrest" ./default.xml >temp.xml
mv temp.xml default1.xml
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step' -t elem -n "Name" -v "FC-JWT"./default1.xml >temp1.xml
mv temp1.xml default.xml
您可以使用以下命令在一个命令中执行此操作:
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step' -t elem -n "Name" -v "FC-SpikeArrest" \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step[2]' -t elem -n "Name" -v "FC-JWT" ./default.xml > temp.xml
如果您想像以前那样使用两个步骤,那么仍然必须使用[2]
索引步骤
元素。否则,value元素将添加到所有步骤元素中
(在-v“FC-JWT./default1.xml
之间还缺少一个关键空格)
因此,第二个命令应该如下所示:
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step[2]' -t elem -n "Name" -v "FC-JWT" ./default1.xml >temp1.xml
非常感谢。第一个命令不起作用,不知道为什么。但是当我把它分成两个命令并使用步骤[2]时,它就工作了。再次感谢。
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step' -t elem -n "Name" -v "FC-SpikeArrest" \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step[2]' -t elem -n "Name" -v "FC-JWT" ./default.xml > temp.xml
xmlstarlet edit --omit-decl \
-s '/ProxyEndpoint/PostFlow/Request' -t elem -n "Step" \
-s '/ProxyEndpoint/PostFlow/Request/Step[2]' -t elem -n "Name" -v "FC-JWT" ./default1.xml >temp1.xml