输入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;
这是解决方案,但我需要将确切的字段(空或空)连接到我的异常消息。
答案 0 :(得分:0)
是的,有。
如果您使用SOAP服务,则可以在XSD中定义要求。因此,在SOAP输入中,您可以启用消息验证。
答案 1 :(得分:0)
首先检查您可以使用的输入树中的字段是否为空:EXISTS(ref.fruits [])。检查null是否可能看起来不起作用。 其次,您可以使用&#34; ResetContentDescriptor&#34;流中的节点用于验证或重新验证XML消息。请查看知识中心here上的节点文档。我希望这会有所帮助。