0

入力ノードで XML メッセージのルート要素にアクセスするためのさまざまな方法を調査し、調査するために 3 日間を費やしましたが、この操作から 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 の開発に関する情報が十分ではありません。RedBook ( here ) を使用しても、どうすれば機能するのか理解できませんでした。どんな助けにも感謝します。ありがとう。

4

1 に答える 1

0

私はついにこの質問に対する答えを得ました。最初に受信InputRoot.BLOBXMLNSC前の計算ノードに変換する必要があり、その後でのみ通常の 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-08-10T05:24:00.807 に答える