在 ESQL 中访问 XMLNSC 标记值

Acces XMLNSC tag value in ESQL

我需要访问一些 XML 值并将它们连接起来作为输出文档的文件名。问题在于解决方案要求以 BLOB 格式读取消息,因此 ESQL 脚本必须首先将 blob 转换为 CHARACTER/XMLNSC。请参阅下面的代码。当我在消息流中 运行 ESQL 代码时,ESQL 代码以错误结束,结果文件仅命名为“.xml”。我正在使用 IBM Integration Toolkit 12。

代码

        DECLARE CCSID INT InputRoot.Properties.CodedCharSetId;
        DECLARE encoding INT InputRoot.Properties.Encoding;
        DECLARE bitStream BLOB ASBITSTREAM(InputRoot.BLOB.BLOB, encoding, CCSID);

        CREATE LASTCHILD OF Environment.tempXML DOMAIN('XMLNSC') PARSE(bitStream, encoding, CCSID,'BLOB', 'XMLNSC');

        DECLARE seorno CHARACTER;
        DECLARE sejobn CHARACTER;
        SET seorno = FIELDVALUE(Environment.tempXML.ROOT.(XML.Element)SEORNO);
        SET sejobn = FIELDVALUE(Environment.tempXML.ROOT.(XML.Element)SEJOBN);
        SET OutputLocalEnvironment.Destination.File.Name = seorno || '-' || sejobn || '.xml';

我刚找到答案

CREATE LASTCHILD OF InputRoot DOMAIN('XMLNSC') PARSE(InputRoot.BLOB.BLOB, InputRoot.Properties.Encoding, InputRoot.Properties.CodedCharSetId);

    DECLARE seorno CHARACTER;
    DECLARE sejobn CHARACTER;

    SET seorno = FIELDVALUE(InputRoot.XMLNSC.ROOT.(XMLNSC.Field)SEORNO);
    SET sejobn = FIELDVALUE(InputRoot.XMLNSC.ROOT.(XMLNSC.Field)SEJOBN);
    SET OutputLocalEnvironment.Destination.File.Name = seorno || '-' || sejobn || '.xml';

您可能已经解决了这个问题,但是您不能将 XML.Element 之类的字段类型常量用于 XMLNSC 解析器。您必须始终使用前缀为 'XMLNSC'.

的常量

如果有帮助,您可以通过将变量初始化为 DECLARE 语句的一部分来使代码更紧凑:

DECLARE seorno CHARACTER FIELDVALUE(InputRoot.XMLNSC.ROOT.(XMLNSC.Field)SEORNO);