带有转义字符“#”的 JXPath 表达式给出问题
JXPath expression with escape character '#' giving issues
输入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
添加一个上下文变量可以帮助转义,如下所述-
JXPathContext context = JXPathContext.newContext(input);
context.getVariables().declareVariable("blabla", "SB#");
context.getValue("//*/$blabla");
输入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
添加一个上下文变量可以帮助转义,如下所述-
JXPathContext context = JXPathContext.newContext(input);
context.getVariables().declareVariable("blabla", "SB#");
context.getValue("//*/$blabla");