如何在变量而不是文件中将xml传递给xmllint?

时间:2014-12-11 03:24:51

标签: shell

我想这样做

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

和filestodelete是XML

类型的BPEL变量

但它不起作用

怎么做> ??

1 个答案:

答案 0 :(得分:7)

假设您已将查询文本放在名为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"