0
我正在嘗試創建一個大型XML主體的SOAP消息。 XML主體來自輸入流,SOAP消息是手動創建的。如何在不將整個XML主體加載到內存的情況下使用AXIOM創建消息。我開始的代碼是:創建一個大型機構的AXIOM SOAP消息
// "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);
有沒有人有更好的方式做到這一點?
感謝您的!現在代碼看起來像我開始的,除了我調用'getDocumentElement(true)' – Nathan