2012-10-04 40 views
1

可能重複:
Sending XPath a variable from Java編譯XPath表達式問題

當我運行這個表達式:

XPathExpression xpe = xpath.compile("//bb[name/text()='k2']/value");  

它工作正常。

但是當我嘗試種植自己的變量(而不是 'K2')是這樣的:

XPathExpression xpe = xpath.compile("//bb[name/text()=" + c_name +"]/value"); 

TT不起作用。

我認爲問題在於工作表達式語法包含'k2',而第二個不會以這種方式出現。

任何想法如何正確地植物變量?我試圖把字符串和字符[]都不工作。

回答

3
"//bb[name/text()='" + c_name +"']/value" 

請注意圍繞對c_name的引用的單引號。

你可以說的是,替代使用String.format()

"//bb[name/text()='%s']/value".format(c_name) 

更具有可讀性。

作爲dogbane筆記,如果變量值本身包含引號,這將不起作用。對於更復雜但更安全的解決方案,請參閱this SO answer

+1

-1如果名字是「Scarlett O'Hara」,則不能使用-1。 – dogbane

+0

當然。注意並引用了適當的解決方案 –

+0

通過字符串連接構造XPath表達式會使您暴露於注入攻擊。使用變量會更好。 –