【问题标题】:How to remove empty XML tags generated due to null input in IIB - ESQL如何删除由于 IIB 中的空输入而生成的空 XML 标记 - ESQL
【发布时间】:2020-04-16 15:37:28
【问题描述】:

在 ESQL 计算节点中工作 - IIB。我有一个像 Destination/Address/Country 这样的输入路径,它是 NULL 即 Country 标签在 Destination/Address 中对于一些输入不可用。 在输出 XML 中,CountryDesc 仅有子“Country”。如果输入字段为 NULL,CountryDesc 也不应该被创建。

SET OutputRoot.XMLNSC.Parcel.Arr_Address.CountryDesc.Country = InputRoot.XMLNSC.Destination.Address.Country;

但输出有一个空标签<CountryDesc/>。如何在不使用 IF Destination.Address.Country IS NOT NULL AND TRIM(Destination.Address.Country) <> '' THEN --assign 之类的 IF 条件的情况下消除这种空标签生成

我正在考虑一个可以解析所有节点并删除空子节点的过程。请提出建议。

【问题讨论】:

    标签: xml conditional-statements ibm-integration-bus extended-sql


    【解决方案1】:

    首先,在讨论数据格式时,您应该知道“null”一词具有特定含义。这可能会有所帮助:

    • 空:字段存在并且具有符合字段数据类型的值。该值是零长度。仅适用于字符串字段,因为(例如)零长度整数不是有效整数。
    • Null:该字段存在并具有一个特殊的允许值,表明不应以正常方式处理该值。在 XML 中,这是通过包含属性 xsi:nil="true" 来完成的
    • 缺失:输入中根本不存在该字段

    您关于删除空标签的问题很好,已在 MQSeries.net 上得到解答:http://www.mqseries.net/phpBB2/viewtopic.php?t=14579

    我建议谨慎行事;我没有使用或审查过该线程中发布的代码,您应该自己对其进行彻底的单元测试。

    【讨论】:

    • 对于特定条件,我的意思是 NULL,因为该字段中的输入中不存在。但我想处理所有生成空标签的情况。感谢您的链接。我会尝试更新。
    • 我知道你的意思,但你真的不应该那样使用“NULL”这个词。 NULL 是一个值。当整个字段丢失时,它甚至没有值。
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2014-12-31
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多