使用变量作为 XPath 的“xmlstarlet edit”

使用变量作为 XPath 的“xmlstarlet edit”

当您按照文档操作时:

xmlstarlet edit --help

您可以阅读它--var可用于将 XPath 表达式声明为变量。

生成moc文件:

cat<<EOF > /tmp/file.xml
<root>
<elt>x</elt>
<!-- comment -->
<elt>y</elt>
<!-- other comment -->
</root>
EOF

这个可以在没有变量的情况下工作:

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a '//elt/following::comment()' -t elem -n p -v 'some new text' \
    -a '//elt/following::comment()' -t elem -n p -v 'some other text' \
/tmp/file.xml

这个不使用变量进行编辑:

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a xp -t elem -n p -v 'some new text' \
    -a xp -t elem -n p -v 'some other text' \
/tmp/file.xml

使用变量我错过了什么?

答案1

用于'$xp'引用您的变量:

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a '$xp' -t elem -n p -v 'some new text' \
    -a '$xp' -t elem -n p -v 'some other text' \
/tmp/file.xml

相关内容