0

输入 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;         

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

4

2 回答 2

0

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

于 2017-04-14T23:32:54.740 回答
0

就在这里。

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

于 2017-04-05T15:02:46.963 回答