【发布时间】:2014-09-14 08:37:19
【问题描述】:
我的问题基本上和this question一样。
我没有足够的声誉来为 OP 的问题添加评论。请帮忙
我遇到的问题是:
我试图调用的 SOAP Web 服务 要求标头具有两个元素,一个包含基本标头数据,另一个包含同步特定数据,所需的标头如下所示:
<header>
<initHeader>
<requestID></requestId>
<...some more elements>
</initHeader>
<syncHeader>
<appId></appId>
<dateTime></dateTime>
<event></event>
</syncHeader>
</header>
使用WebServiceMessageCallback 生成标头时(特别是在下面显示的转换期间),我得到了:
"ERROR: 'The markup in the document following the root element must be well-formed.'"
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new StringSource(soapHeaderStr), ((SoapMessage) message).getSoapHeader().getResult());
这里的问题是转换器希望标头中的所有元素都在一个根元素下。但是这里,标题有两个。
我像这样(下)更改了标题数据,并且转换器没有抱怨。
<header>
<myRootelement>
<initHeader>
<requestID></requestId>
<...some more elements>
</initHeader>
<syncHeader>
<appId></appId>
<dateTime></dateTime>
<event></event>
</syncHeader>
</myRootelement>
</header>
根据上面提到的问题,OP 已经解决了这个问题,方法是像上面一样添加一个虚拟根元素,然后在将其转换为标题之前将其删除。
我想知道如何删除虚拟根元素?可能是这样的? http://technology.amis.nl/2011/05/16/how-to-remove-unwanted-soap-header-elements-in-jax-ws/
我不太确定如何删除根元素同时保持其子元素完整。
【问题讨论】:
标签: spring soapheader