编译XPath表达式问题

时间:2012-10-04 11:24:26

标签: java xml xpath

  

可能重复:
  Sending XPath a variable from Java

当我运行这个表达式时:

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

工作正常。

但是当我尝试种植我自己的变量(而不是'k2')时,这样:

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

tt不起作用。

我认为问题是工作表达式语法包含'k2'而第二种不会出现这种情况。

任何想法如何正确植入变量?我试过把字符串和字符[]都不起作用。

1 个答案:

答案 0 :(得分:3)

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

请注意围绕c_name的引用的单引号。

你可以使用String.format()

来争论替代方案
 "//bb[name/text()='%s']/value".format(c_name)

更具可读性。

正如dogbane所说,如果变量值本身包含引号,这将不起作用。有关更复杂但更安全的解决方案,请参阅this SO answer