Mule 3.2中的分离器

时间:2014-09-23 13:01:38

标签: java xml regex mule mule-studio

我正在使用Mule流程中的拆分器,如此问题的答案所述:

Mule splitter using regex returned no results

然而,当我尝试在Mule 3.2上做类似的事情时,我收到以下错误:

来自URL [file:/ ...]的XML文档中的第27行无效;嵌套异常是org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:找到以元素'expression-language'开头的无效内容。其中一个“{”http://www.mulesoft.org/schema/mule/core“:注释,”http://www.mulesoft.org/schema/mule/core“:default-threading-profile,”http://www.mulesoft.org/schema/mule/core“:default-dispatcher-threading-profile,”http://www.mulesoft.org/schema/mule/core “:default-receiver-threading-profile,”http://www.mulesoft.org/schema/mule/core“:default-service-threading-profile,”http://www.mulesoft.org/schema/mule/core“:abstract-reconnection-strategy}'是预期的。 (org.mule.api.lifecycle.InitialisationException)

所以,我的问题是:Mule 3.2中可以使用以下元素吗?如果没有,那么在该版本中执行此操作的正确方法是什么?

<configuration>
    <expression-language autoResolveVariables="false">
        <import class="org.mule.util.StringUtils" />
    </expression-language>
</configuration>
<splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter" />

修改

根据@Ryan Carter的回答,我使用了以下内容:

<splitter evaluator="groovy" expression="payload.split('\n\r')" doc:name="Splitter" />

这适用于Mule 3.4,但在Mule 3.2上似乎返回一个引发以下警告的数组,以及后验错误:

Splitter只返回一个结果。如果不是这样,请检查您的拆分表达式

编辑2

在Mule 3.2中你必须添加toList()函数来“拆分”数组,这个版本似乎被认为是一个单独的对象。

2 个答案:

答案 0 :(得分:2)

3.2架构中没有它:http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd

在3.3.x之前未添加

expression-languagehttp://www.mulesoft.org/schema/mule/core/3.3/mule.xsd

在此之前,您必须完全符合课程资格。即#[org.mule.util.StringUtils.split(message.payload, '\n\r')]

<强>更新 要在Mule 3.2中使用拆分器,您还需要指定“评估者”属性。 在这种情况下,groovy评估器可能效果最好:

答案 1 :(得分:0)

知道了:

<splitter evaluator="groovy" expression="payload.split('\n\r').toList()" doc:name="Splitter" />