jcr xpath搜索带有特殊字符的文本? ! +

时间:2014-07-30 08:44:23

标签: xpath lucene jcr

我尝试使用包含一些特殊字符文本的属性的节点? +和!

我有4个节点:

/tmp/exclamation[@prop="value with!"]
/tmp/plus[@prop="value with+"]
/tmp/question[@prop="value with?"]
/tmp/string[@prop="value with string"]

现在我的疑问:

/jcr:root/tmp//*[(jcr:contains(@prop, 'with') )] 

返回所有4个节点

/jcr:root/tmp//*[(jcr:contains(@prop, 'with\!') )] 

返回所有4个节点

/jcr:root/tmp//*[(jcr:contains(@prop, 'with\?') )] 

返回所有4个节点

/jcr:root/tmp//*[(jcr:contains(@prop, 'with\+') )] 

返回所有4个节点

我应该如何正确逃脱! +?只获得满足我的搜索条件的节点?

1 个答案:

答案 0 :(得分:0)

据我所知,您试图逃避的字符是合法的XML字符,下面是非法字符:

& - &
< - &lt;
> - &gt;
" - &quot;
' - &apos;

所以不需要escpae这些字符,只需使用普通的contains子句执行XPath查询:

/jcr:root/tmp//*[(jcr:contains(@prop, 'with!') )]

/jcr:root/tmp//*[(jcr:contains(@prop, 'with?') )]

/jcr:root/tmp//*[(jcr:contains(@prop, 'with+') )]