IBM Integration Toolkit:无法访问元素&分配默认命名空间



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

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开发的信息。即使有了红皮书(在这里),我也无法理解如何使事物工作。我将感激任何帮助。谢谢。

我终于得到了这个问题的答案。我必须首先将前一个计算节点中的传入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');

最新更新