1

次の形式 (メッセージ ツリー) で Web サービス応答メッセージを解析しようとしています。

Message
    Properties
            Properties..[]
    DFDL
            ObjectIWantUnmarshalled
                    AllItsDataIwant[]

そして、「ObjectIWantUnmarshalled」を非整列化します。ただし、このデータは DFDL 形式です。私の要求では、XML から DFDL にフォーマットするために次の行を使用します。

Document outDocument = outMessage.createDOMDocument(MbDFDL.PARSER_NAME);

しかし、DFDL から XML への逆の方法はないようです。私が試してみました:

Document outDocument = inMessage.createDOMDocument(MbXMLNSC.PARSER_NAME);

MbMessage から直接データを単純にアンマーシャリングする他の試みと同様に:

jaxbContext_COBOL.createUnmarshaller().unmarshal(inMessage.getDOMDocument())

しかし、この方法または他の方法で Document ノードを取得できませんでした。常に null です。

4

1 に答える 1

2

おそらくかなり遅すぎますが、あなたはこれについて間違った方法で行っていました.

WMB と IIB を使用する場合は、javax.XML.* クラス ライブラリではなく、組み込みの XML サポートを使用する必要があります。したがって、JAXB アンマーシャラーを使用する代わりに、

  • 出力メッセージのルートの下に XMLNSC ツリーを作成する
  • 入力 DFDL メッセージ ツリーを出力 XMLNSC メッセージ ツリー (1 行) にコピーします。

...そして、メッセージ フローは、出力ノードに遭遇したとき、または outMessage.toBitstream() を呼び出したときに、必要なときにいつでもツリーを XML としてシリアル化 (アンマーシャリング) します。

于 2015-11-11T20:40:05.160 に答える