我尝试使用包含一些特殊字符文本的属性的节点? +和!
我有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个节点
我应该如何正确逃脱! +?只获得满足我的搜索条件的节点?
答案 0 :(得分:0)
据我所知,您试图逃避的字符是合法的XML字符,下面是非法字符:
& - & < - < > - > " - " ' - '
所以不需要escpae这些字符,只需使用普通的contains子句执行XPath查询:
/jcr:root/tmp//*[(jcr:contains(@prop, 'with!') )]
/jcr:root/tmp//*[(jcr:contains(@prop, 'with?') )]
/jcr:root/tmp//*[(jcr:contains(@prop, 'with+') )]