0

输入 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*")    

ETC..

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

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

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

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

4

1 回答 1

1

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

JXPathContext context = JXPathContext.newContext(input);
context.getVariables().declareVariable("blabla", "SB#");
context.getValue("//*/$blabla");
于 2017-09-26T09:59:34.570 回答