gpt4 book ai didi

java - 创建具有大型正文的 AXIOM SOAP 消息

转载 作者:行者123 更新时间:2023-12-01 14:59:03 25 4
gpt4 key购买 nike

我正在尝试创建具有大型 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 正文的情况下完成此操作。不过,我对该解决方案并不满意,因为它使用实现类而不是公共(public) 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 );

有人有更好的方法吗?

最佳答案

Axiom 的最新版本有一个 getDocumentElement 方法的变体,它允许您准确地执行您想要的操作:

http://ws.apache.org/axiom/apidocs/org/apache/axiom/om/OMXMLParserWrapper.html#getDocumentElement(boolean )

关于java - 创建具有大型正文的 AXIOM SOAP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com