【问题标题】:Best way to check for well formed XML in Mule (3.4)在 Mule (3.4) 中检查格式良好的 XML 的最佳方法
【发布时间】:2014-06-26 01:40:16
【问题描述】:

目前在 Mule 中检查传入 XML 消息格式正确的最佳方法是什么?

例如,如果我向该选项发送格式错误(或非)的 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)

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

谢谢, 杰夫

【问题讨论】:

    标签: xml mule


    【解决方案1】:

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

    <mulexml:is-xml-filter />
    

    这会过滤掉非/错误的 xml。您可以将其与消息过滤器一起使用以路由到 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>
    

    【讨论】:

    • 嗨瑞恩,我没有找到。很好的答案,也感谢你的 catch 例子。不错!
    • @Ryan 既然不再有过滤器,在 Mule 4 中是否有功能等效的方法来执行此操作?我需要验证入站 SOAP 是有效的 XML,但是内容每次都在变化,所以我不能使用架构。
    猜你喜欢
    • 2016-11-10
    • 2010-10-06
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多