我正在使用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只返回一个结果。如果不是这样,请检查您的拆分表达式
在Mule 3.2中你必须添加toList()函数来“拆分”数组,这个版本似乎被认为是一个单独的对象。
答案 0 :(得分:2)
3.2架构中没有它:http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd
在3.3.x之前未添加 expression-language
:http://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" />