Camel 新手,我正在尝试解析响应错误 xml。在骆驼上下文中,我需要确定错误文件中是否存在特定值,并以不同于其他错误的方式处理它。
其他错误使用一系列 when 语句:
<when>
<xpath>/abc:ErrorResponse/abc:Error/abc:Message/.</xpath>
<setHeader headerName="RESPONSE_STRING">
<xpath resultType="java.lang.String">/abc:ErrorResponse/abc:Error/abc:Message/.</xpath>
</setHeader>
<setHeader headerName="MY_DATA_FIELD"><constant>Error</constant></setHeader>
<to uri="def:doErrorStuff" pattern="InOnly"/>
</when>
<when>
<xpath>/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
<setHeader headerName="RESPONSE_STRING">
<xpath resultType="java.lang.String">/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
</setHeader>
<setHeader headerName="MY_DATA_FIELD"><constant>Error</constant></setHeader>
<to uri="def:doErrorStuff" pattern="InOnly"/>
</when>
我的错误 XML 文件有一个带有子“代码”元素的外部错误元素。我需要解析代码元素更新的值:这是我正在解析的 XML
<ErrorResponse xmlns="http://myhost/location1/">
<Error>
<Type>reserved</Type>
<Code>TEXT_I_NEED_TO_PARSE_IN_WHEN_STATEMENT</Code>
</Error>
<RequestId>some_id</RequestId>
</ErrorResponse>
我使用了 xpath 和“简单”的组合来进行检查。像这样:
<when>
<xpath>/ghi:ErrorResponse/ghi:Error/ghi:Message/.</xpath>
<when>
<simple>${in.body.code} == 'StringIAmSearchingFor'</simple>
<!-- Do Stuff --!>
</when>
</when>
但是,我没有得到我期望的回应。
1.这种方法或语法有问题吗?
2.有没有办法在布局时将双精度组合在一起,以便将它们组合在一起。否则,如果我在现有的两个之前添加我的“when”语句,则现有的“ghi”when 语句将永远不会被执行(xpath 语句匹配)。