在Mule(3.4)中检查格式良好的XML的最佳方法

时间:2014-06-09 01:10:11

标签: xml mule

目前用于检查传入的XML消息是否在Mule中形成良好的最佳方法是什么?

例如,如果我将错误形成的(或非)XML发送到此选项,则Mule会抛出错误并且流程停止:

<choice>
       <when expression="#[xpath('fn:count(//event/@publicID)') != 0]">
....

错误如下:

[Fatal Error] :1:1: Content is not allowed in prolog.
java.lang.RuntimeException: org.mule.api.MuleRuntimeException: Failed to evaluate XPath    expression: "fn:count(//event/@publicID)"
at org.mule.module.xml.el.XPathFunction.call(XPathFunction.java:50)

另外,有没有办法在流程中捕获并忽略此错误?我按照文档尝试了异常策略,没有在哪里。

谢谢, 杰夫

1 个答案:

答案 0 :(得分:0)

你现在可能已经解决了这个问题,但是在mule xml模块中有一个方便的过滤器可能会有所帮助:

<mulexml:is-xml-filter />

这会过滤掉非/坏的xml。您可以将它与message-filter一起用于路由到dlq或抛出异常等。

此外,我可以按如下方式捕获该异常:

<choice-exception-strategy>
   <catch-exception-strategy when="#[exception.causedBy(org.mule.api.MuleRuntimeException)]">
      <logger level="ERROR" message="not xml" />
   </catch-exception-strategy>
</choice-exception-strategy>