命名空间的Spring Spel XPATH表达式,但没有前缀
问题:尝试使用SpEL XPATH构建正确的XPATH,以便在根标记具有名称空间但没有前缀的“Name”标记值上进行关联 错误:意外的令牌。应为“rparen()”,但为“标识符” 它在抱怨';在这里,我试图为xpath计算提供一个引用 XML 解决方案: 正确的字符串文字: -您可以看到它现在是正确的,因为标记化过程将所有内容都放在字符串文本标记中命名空间的Spring Spel XPATH表达式,但没有前缀,spring,xpath,spring-el,Spring,Xpath,Spring El,问题:尝试使用SpEL XPATH构建正确的XPATH,以便在根标记具有名称空间但没有前缀的“Name”标记值上进行关联 错误:意外的令牌。应为“rparen()”,但为“标识符” 它在抱怨';在这里,我试图为xpath计算提供一个引用 XML 解决方案: 正确的字符串文字: -您可以看到它现在是正确的,因为标记化过程将所有内容都放在字符串文本标记中 [[HASH(#)](0,1), [IDENTIFIER:xpath](1,6), [LPAREN(()](6,7), [IDENTIFI
[[HASH(#)](0,1), [IDENTIFIER:xpath](1,6), [LPAREN(()](6,7), [IDENTIFIER:payload](7,14), [COMMA(,)](14,15), [LITERAL_STRING:'//*[local-name()=''Name'']/text()'](16,56), [RPAREN())](56,57)]
其他调试注释:
在此处拉出弹簧git时:
发布的表达式将生成无效的XPath。它应该在
/text()
前面加上右方括号:
'//*[local-name()='Name']/text()'
或者可能使用双单引号进行转义,建议如下:
我尝试了以上两种方法,但仍然得到相同的错误。我知道我可能错过了一些小东西。试图在spring中找到一个使用local-name()的xpath表达式,但还没有找到一个示例。我把复制和粘贴弄得一团糟,直到我在春季追踪到标记化过程时才意识到这一点。啊。哦,追踪起来很有趣。
this.expressionString = "#xpath(payload, '//*[local-name()=Name]')"//This works
[[HASH(#)](0,1), [IDENTIFIER:xpath](1,6), [LPAREN(()](6,7), [IDENTIFIER:payload](7,14), [COMMA(,)](14,15), [LITERAL_STRING:'//*[local-name()=Name]'](16,45), [RPAREN())](45,46)]
this.expressionString = "#xpath(payload, '//*[local-name()='Name']')"//Thisfails
[[HASH(#)](0,1), [IDENTIFIER:xpath](1,6), [LPAREN(()](6,7), [IDENTIFIER:payload](7,14), [COMMA(,)](14,15), [LITERAL_STRING:'//*[local-name()='](16,35), [IDENTIFIER:Name](35,44), [LITERAL_STRING:']'](44,47), [RPAREN())](47,48)]
correlation-strategy-expression="#xpath(payload, '//*[local-name()=''Name'']/text()')"
[[HASH(#)](0,1), [IDENTIFIER:xpath](1,6), [LPAREN(()](6,7), [IDENTIFIER:payload](7,14), [COMMA(,)](14,15), [LITERAL_STRING:'//*[local-name()=''Name'']/text()'](16,56), [RPAREN())](56,57)]
'//*[local-name()='Name']/text()'
'//*[local-name()=''Name'']/text()'