如何将xml传递给变量而不是文件中的xmllint?
问题描述:
我想这样做如何将xml传递给变量而不是文件中的xmllint?
xmllint --xpath "//filestodelete[filename = somename]/text()" #filestodelete#
和filestodelete是XML类型
的BPEL变量,但它不工作
如何做到这一点>?
答
假设你已经把你的查询文本在名为query
shell变量(让我的例子更简洁) -
使用bash,你可以使用一个herestring:
xmllint --xpath "$query" - <<<"$filestodelete"
符合POSIX SH ,你需要使用定界符:
xmllint --xpath "$query" - <<EOF
$filestodelete
EOF
顺便说一句 - 因为xmllint
支持--xpath
不是所有的版本中,你必须是跨版本兼容tter如果使用XMLStarlet代替,这支持从初始创建如下:
xmlstarlet sel -t -m "$query" -v . <<<"$filestodelete"
你有你的XML文档中的shell变量? – 2014-12-11 03:26:31
我在回答中假定BPEL变量作为shell变量公开。如果这不是真的,那么您有一个BPEL问题,而不仅仅是一个shell问题,它需要适当标记。 – 2014-12-11 03:46:41
是的,我正在使用允许在shell中使用BPEL变量的框架....这意味着filestodelete变量是xml类型的BPEL变量。但它不是系统中的文件。 – sakal 2014-12-11 13:28:04