【问题标题】:IIB ESQL XML ValidationsIIB ESQL XML 验证
【发布时间】:2017-07-25 12:16:28
【问题描述】:

输入 XML:

<Green>
    <Fruits>Apple</Fruits>
    <Vegetables>
        <1>Beans</1>
        <2>Carrot</2>
    </Vegetables>
    <LivingThings @Type = Bird>Parrot</LivingThings>
    <NonLivingThings>Car</NonLivingThings>
</Green>    

我想检查 Root 'Green' 下的所有 Field 元素是否存在且不为空。

我需要为每个错误抛出两个不同的异常:

对于不存在的字段 - 字段不存在; 对于空值 - 不是有效值

IF(FIELDTYPE(ref.fruits)IS NULL OR FIELDTYPE(ref.Vegetables)IS NULL OR FIELDTYPE(ref.livingthins)IS NULL OR 
                                    FIELDTYPE(ref.nonlivingthing)IS NULL) THEN
                                    Throw USER EXCEPTION MESSAGE 2000 VALUES ('Field Not Present'); 
                                ELSEIF(FIELDVALUE(ref.fruits)= '' OR FIELDVALUE(ref.Vegetables)= '' OR FIELDVALUE(ref.livingthins)= '' OR 
                                    FIELDVALUE(ref.nonlivingthing)= '') THEN
                                    Throw USER EXCEPTION MESSAGE 2004 VALUES ('Invalid Value'); 
                                ELSE                                    
                                    Propagate to terminal 'out1';                                   
                                END IF;         

这是解决方案,但我需要将 null 或空的确切字段连接到我的异常消息。

【问题讨论】:

    标签: ibm-integration-bus extended-sql


    【解决方案1】:

    是的,有。

    如果您使用 SOAP 服务,您可以在 XSD 中定义需求。因此,在您的 SOAP 输入中,您可以启用消息验证。

    【讨论】:

    • 您好 Rafael,感谢您的意见。但我正在设计的服务不涉及 SOAP。
    • 您使用的是哪个输入。如果您可以使用 XSD 或 DFDL 对此进行建模,则可以对任何输入节点启用验证。
    • 我正在设计一个 MQ 服务。
    • 您的消息格式是什么,XML 还是 JSON? JSON 不强制使用模式,因此您可以通过编码进行验证。如果您的消息是 XML 格式,您可以使用 XSD 建模并在 MQ 输入节点中启用验证。
    • XML。我已经更新了上面的解决方案。我需要将空字段或不存在的字段直接添加到我的异常消息中。您对此有什么建议吗?
    【解决方案2】:

    首先检查输入树中的字段是否为空,您可以使用:EXISTS(ref.fruits[])。检查是否为 null 可能无法正常工作。 其次,您可以使用流程内的“ResetContentDescriptor”节点来验证或重新验证 XML 消息。请查看知识中心here上的节点文档。我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-05-30
      • 2023-04-08
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多