2012-10-04 55 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表达式会使您暴露于注入攻击。使用变量会更好。 –