java - Mule 3.2 中的分离器

标签 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:发现以元素“表达式语言”开头的无效内容。 '{"http://www.mulesoft.org/schema/mule/core ":annotations, "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- 之一配置文件,“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.InitializationException)

所以,我的问题是:以下元素可以在 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() 函数来“拆分”数组,该版本似乎将其视为单个对象。

最佳答案

它在 3.2 架构中不可用:http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd

表达式语言 直到 3.3.x 才添加:http://www.mulesoft.org/schema/mule/core/3.3/mule.xsd

在那之前,您只需完全符合该类(class)的资格即可。即 #[org.mule.util.StringUtils.split(message.payload, '\n\r')]

更新 要在 Mule 3.2 中使用分割器,您还需要指定一个“evaluator”属性。 在这种情况下,常规评估器可能效果最好:

关于java - Mule 3.2 中的分离器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25995817/

相关文章:

java - 新的 ObjectInputStream() block

java - Kotlin 和 Gradle 的 Flutter 依赖问题

xml - 使用 Haskell 和 HXT 同时处理两个 XML 文件

xml - Xquery 循环产生太多结果。错误的 "for"语句?

javascript - 从一个字符或另一个字符开始的子字符串

java - Java 中的运行时多态性示例?

Java 公历输出错误的日期

java - Oracle XML XDK 需要 jar

regex - 正则表达式提取恰好 8 位或正好 7 位的数字,如果数字有更多位则丢弃

regex - 在 linux bash 中使用正则表达式更改输出文件名