【问题标题】:Mule splitter using regex returned no results使用正则表达式的 Mule 拆分器未返回任何结果
【发布时间】:2014-10-18 17:04:21
【问题描述】:

我正在尝试按行拆分 csv 文件。为此,我在我的流程中尝试了以下拆分器:

<splitter expression="#[regex('^')]" doc:name="Splitter"/>

<splitter expression="#[regex('\n')]" doc:name="Splitter"/>

<splitter expression="#[regex('.*')]" doc:name="Splitter"/>

但是,尽管该文件有很多行,但我在日志中收到以下消息:

Splitter returned no results. If this is not expected, please check your split expression

【问题讨论】:

  • 通常^ 匹配字符串的开头,您需要以某种方式设置m 修饰符(多行)以使^ 匹配每行的开头。或者,您可以像\n 这样在换行符上进行拆分,但有些事情告诉我,这个Mule Splitter 可能会理解行应该是记录,并且您真的应该给字符来拆分列。不过我对骡子不熟悉,所以我可能不喜欢那个。
  • 尝试使用.*,因为它将匹配整行

标签: java regex mule mule-studio splitter


【解决方案1】:

最后,我在这里找到了一个解决方案的教程: http://www.dotnetfunda.com/articles/show/2070/using-mule-studio-to-read-csv-comma-seperated-value-data-from-fileinbo

分离器必须这样配置:

    <splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter" />

这需要在流程中包含以下元素:

<configuration doc:name="Configuration">
    <expression-language autoResolveVariables="true">
        <import class="org.mule.util.StringUtils" />
    </expression-language>
</configuration>

【讨论】:

    【解决方案2】:

    此表达式适用于拆分 CSV 文件:-

    <splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter_For_MultipleRow"/>
    

    如果你的 CSV 文件有一个列标题,如姓名、年龄等......你可以使用这个:-

    <splitter expression="#[rows=StringUtils.split(message.payload, '\n\r');ArrayUtils.subarray(rows,1,rows.size())]" doc:name="Splitter_For_MultipleRow"></splitter>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2023-03-26
      • 1970-01-01
      • 2019-10-19
      • 2015-12-06
      相关资源
      最近更新 更多