gpt4 book ai didi

java - Apache Camel/Spring DSL 中 header 值的 xpath 内的子字符串

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:40 28 4
gpt4 key购买 nike

我的流程是这样的,我的问题是我在第二个 header 上得到了错误的值:

                           <when>                       
<xpath>//kred:assigment_GetRq/nrb</xpath>
<setHeader headerName="nrbPE">
<xpath resultType="java.lang.String">//kred:assigment_GetRq/nrb/text()</xpath>
</setHeader>
<setHeader headerName="subNrbPE">
<xpath resultType="java.lang.String">substring(${headers.nrbPE}, 3, 6)</xpath>
</setHeader>
<setHeader headerName="kod">
<simple>${properties:apiEsb.assigment.bpCode}</simple>
</setHeader>
<log loggingLevel="INFO" message="header nrb: ${headers.nrbPE}"/>
<log loggingLevel="INFO" message="header subNrb: ${headers.subNrbPE}"/>
<log loggingLevel="INFO" message="Property: ${headers.kod}"/>
<choice>
<when>
<xpath>${headers.subNrbPE} = ${headers.kod}</xpath>
<process ref="createDetailSectionProc" />
</when>
<otherwise>
<log loggingLevel="INFO" message="otherwise"/>
</otherwise>
</choice>
</when>

日志:

08:26:47,067 | INFO  | Esb| Assigment_Get    |  | 68 - org.apache.camel.camel-core - 2.6.0.fuse-03-01 | header nrb: 99999999
08:26:47,067 | INFO | Esb| Assigfment_Get | | 68 - org.apache.camel.camel-core - 2.6.0.fuse-03-01 | header subNrb: ass ja

我不明白语法有什么问题,因为第二个值应该是 9999,但我看到子字符串在 (class java...)我需要将此子字符串值与 Camel 中某些逻辑语句中的属性值进行比较。

最佳答案

您应该使用以下语法:

<setHeader headerName="subNrbPE">
<xpath resultType="java.lang.String">substring($in:nrbPE, 3, 4)</xpath>
</setHeader>

因为 XPath substring需要

fn:substring(sourceString, startingLoc, length)

因此,如果您想要 4 位数字,则需要指定起始位置 (3) 以及您想要的字符数 (4)。

比较也应该改为:

<simple>${headers.subNrbPE} == ${headers.kod}</simple>

关于java - Apache Camel/Spring DSL 中 header 值的 xpath 内的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239106/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com