在 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);
我需要访问一些 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);