【问题标题】:IBM Integration Toolkit : Not able to access elements & assign default namespaceIBM Integration Toolkit:无法访问元素并分配默认名称空间
【发布时间】:2018-06-28 22:30:00
【问题描述】:

我花了三天时间研究和探索在输入节点访问 XML 消息的根元素的不同方法,但无法从该操作中得到非空结果:

DECLARE RootElement CHARACTER FIELDNAME(InputRoot.XMLNSC.*[<]);

RootElement 始终为 null,但当我这样做时(如下),消息被正确复制。

SET OutputRoot = InputRoot;

问题是传入的消息没有声明任何命名空间,并且在计算节点中,我正在尝试分配它:

SET OutputRoot.(XMLNSC.NamespaceDecl)xmlns = orgs_crm;

orgs_crm在哪里

DECLARE NS_CRM_MDO CONSTANT CHARACTER 'http://example.org/schema_crm';
DECLARE orgs_crm    NAMESPACE   NS_CRM_MDO;

输入信息是:

<?xml version="1.0" encoding="UTF-8"?>
<Message><MessageId>5348569534564534682</MessageId></Message>

输出应该是:

<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://example.org/schema_crm" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <MessageId>5348569534564534682</MessageId>
</Message>

我很遗憾没有足够的关于 IBM 的 Integration Toolkit 开发的信息。即使使用红皮书 (here),我也无法理解如何让事情发挥作用。我将不胜感激。谢谢。

【问题讨论】:

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


    【解决方案1】:

    我终于得到了这个问题的答案。我必须先在前面的计算节点中将传入的InputRoot.BLOB 转换为XMLNSC,然后才能进行通常的 XML 转换。

    DECLARE inCCSID INT InputProperties.CodedCharSetId; 
    DECLARE inEncoding INT InputProperties.Encoding; 
    DECLARE inBitStream BLOB ASBITSTREAM(InputRoot.BLOB, inEncoding, inCCSID); 
    CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(inBitStream, inEncoding, inCCSID,'BLOB', 'XMLNSC');
    

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多