使用XMLStarlet添加2个类似的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/> <

我想在Azure DevOps中的Bash任务中使用XMLStartNet来编辑下面的XML

    <?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