大きな XML 本文を持つ SOAP メッセージを作成しようとしています。XML 本文は入力ストリームから取得され、SOAP メッセージは手動で作成されます。AXIOM を使用して、XML 本文全体をメモリにロードせずにメッセージを作成するにはどうすればよいですか。私が始めたコードは次のとおりです。
// "in" contains SOAP body
final OMXMLParserWrapper payloadBuilder = OMXMLBuilderFactory.createOMBuilder( in );
final OMElement payloadElement = payloadBuilder.getDocumentElement();
final SOAPEnvelope soapEnvelope = msgContext.getEnvelope();
soapEnvelope.getBody().addChild( payloadElement );
ただし、これは XML 本文全体をメモリにロードします (payloadElement.detach()
の一部として呼び出されますaddChild()
)。
このような AXIOM モデルをマージするための推奨される方法は何ですか?
XML本体全体をロードせずにこれが機能するように、コードを次のように変更しました。ただし、パブリック API ではなく実装クラスを使用するため、このソリューションには満足できません。
final OMXMLParserWrapper payloadBuilder = OMXMLBuilderFactory.createOMBuilder( in );
final OMNodeEx payloadElement = (OMNodeEx)payloadBuilder.getDocumentElement();
payloadElement.setParent( null );
final SOAPEnvelope soapEnvelope = msgContext.getEnvelope();
final OMElementImpl soapBody = (OMElementImpl)soapEnvelope.getBody();
soapBody.addChild( payloadElement, true );
誰かがこれを行うためのより良い方法を持っていますか?