我想做这个

xmllint --xpath "//filestodelete[filename = somename]/text()" #filestodelete#


并且filestodelete是XML类型的BPEL变量

但它不起作用

该怎么做>?

最佳答案

假设您已将查询文本放在名为query的shell变量中(以使我的示例更简洁)-

使用bash,您可以使用herestring:

xmllint --xpath "$query" - <<<"$filestodelete"


使用POSIX sh,您需要使用heredoc:

xmllint --xpath "$query" - <<EOF
$filestodelete
EOF


顺便说一句-由于并非xmllint的所有版本都支持--xpath,因此,如果您使用XMLStarlet作为替代,则在各个发行版之间将具有更好的兼容性,该支持从其初始创建就支持以下内容:

xmlstarlet sel -t -m "$query" -v . <<<"$filestodelete"

09-26 18:29