2015-08-09 21 views
0

我花了三天的時間研究並探究了在輸入節點上訪問XML消息根元素的不同方式,但無法從此操作獲取非空結果:IBM Integration Toolkit:無法訪問元素並分配默認名稱空間

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

RootElement始終爲空,但是當我這樣做(下面)時,正確複製了消息。

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的集成工具包開發足夠的信息。即使使用RedBook(here),我也無法理解如何使事情順利進行。我會感謝任何幫助。謝謝。

回答

0

我終於得到了這個問題的答案。我必須先在前面的計算節點中將傳入的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'); 
相關問題