消息Enricher用法

时间:2012-01-22 16:30:06

标签: esb mule

我有一些带有javabean有效负载的骡子流,我想做的是使用从https出站网址返回的一些xml(xpath)来丰富一些变量。

我正在尝试的是:(假设整个证书/ tls问题不是问题):

<enricher>
    <https:outbound-endpoint name="clientEndpoint" address="https://someaddress" 
         connector-ref="httpConnector" exchange-pattern="request-response"/> 
        <enrich target="#[variable:paymentValidated]" source="#[xpath:INCIDENTS/INCIDENT/@state]" />
</enricher>
<logger message="#[variable:paymentValidated]" level="ERROR" />

但是,我似乎无法使用从https端点返回的xml,我不断受到XPATH违规。在用验证器检查我的xpath后,我确定我正在给出一个正确的xpath。

我也尝试过使用bytearraytostring响应转换器 - 但问题没有解决。

任何人都知道如何解决这个问题并让它发挥作用?

我试图解析的xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<INCIDENTS process_ms="56">
  <INCIDENT assignee="Unassigned" closedtime="" createdtime="Fri Jan 20 15:13:10 EST 2012" creator="System" disposition="Not Set" disposition_id="-1" domain="SES" guid="5749976847410062927" id="147" incident_type="security" modifiedtime="Sat Jan 21 15:13:15 EST 2012" open_duration="2 days 18 hours 53 mins 56 secs" priority="3" referencenum="0000000147" severity="4" state="New" state_id="0" status="Open" status_id="1" team="Unassigned" tracking="No" type="SomeType" userpriority="">
    <DESCRIPTION>
    <![CDATA[ Some message" ]]> 
    </DESCRIPTION>
  </INCIDENT>
</INCIDENTS>

2 个答案:

答案 0 :(得分:0)

由于您没有显示确切的错误,我会尝试猜测。

我认为问题来自于您从事件列表中选择状态属性而不是一个事件。试试:

/INCIDENTS/INCIDENT[1]/@state

答案 1 :(得分:0)

您还可以使用来自Mule 3.6的Mule Xpath3的功能 如下所示: -

#[xpath3('/INCIDENTS/INCIDENT[1]/@state')]

请在此处找到Xpath3的链接: - dependency injection