2014-12-11 24 views
2

我想這樣做如何將xml傳遞給變量而不是文件中的xmllint?

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

和filestodelete是XML類型

的BPEL變量,但它不工作

如何做到這一點>?

+0

你有你的XML文檔中的shell變量? – 2014-12-11 03:26:31

+1

我在回答中假定BPEL變量作爲shell變量公開。如果這不是真的,那麼您有一個BPEL問題,而不僅僅是一個shell問題,它需要適當標記。 – 2014-12-11 03:46:41

+0

是的,我正在使用允許在shell中使用BPEL變量的框架....這意味着filestodelete變量是xml類型的BPEL變量。但它不是系統中的文件。 – sakal 2014-12-11 13:28:04

回答

6

假設你已經把你的查詢文本在名爲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" 
+0

所以這個工作與xml存儲在一個變量而不是物理上在本地unix系統? – sakal 2014-12-11 16:10:37

+0

'$ filestodelete'預計是你的變量,這裏的XML不是文件名 - 也就是說,當然是。 – 2014-12-11 16:50:59

+0

也許我把它寫錯了,filestodelete是一個xsd類型的文件,它它是一個工作流變量,而不是驅動器上的物理文件。 – sakal 2014-12-25 14:53:21

相關問題