带有转义字符'#'的JXPath表达式提供问题

时间:2017-09-26 09:01:11

标签: java arrays json xpath jxpath

输入JSON:

[
    {"Activity":"yes","SBNumber":"123"},
    {"Activity":"yes","SB#":"123"}
]

JXPath表达式:

//works : returns "123"
JXPathContext.newContext(input).getValue("//*/SBNumber")

//fails: throwing JXPathInvalidSyntaxException
JXPathContext.newContext(input).getValue("//*/SB#")

如何从#转义#以从SB#中检索值?

尝试失败包括

JXPathContext.newContext(input).getValue("//*/SB\\#")  
JXPathContext.newContext(input).getValue("//*/SB[#]")
JXPathContext.newContext(input).getValue("//*/SB*")    

等。

但是,我可以从下面检索节点

JXPathContext.newContext(input).getValue("//*/*[contains(.,'SB#')]")

但是它只引用父节点: - (

任何可能的解决方案/替代方案都会有所帮助.. tx

1 个答案:

答案 0 :(得分:1)

添加上下文 变量可以帮助转义,如下所述 -

JXPathContext context = JXPathContext.newContext(input);
context.getVariables().declareVariable("blabla", "SB#");
context.getValue("//*/$blabla");