这就是我想要的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tps="http://mysite.it">
<soapenv:Header/>
<soapenv:Body>
<tps:getBook>
<tps:id>45</tps:id>
</tps:Retrieve_getBook_Poi_Recordset>
</soapenv:Body>
</soapenv:Envelope>
但这是我的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tps="http://mysite.it">
<soapenv:Header/>
<soapenv:Body>
<tps:getBook xmlns:tps="http://mysite.it">
<tps:id xmlns:tps="http://mysite.it">45</tps:id>
</tps:Retrieve_getBook_Poi_Recordset>
</soapenv:Body>
</soapenv:Envelope>
我正在使用javax.xml.soap。*来创建soap消息...而且我找不到在param标签中只插入前缀的方法。
这是生成soap消息的代码:
MessageFactory msgFactory = null;
SOAPMessage message = null;
msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
message = msgFactory.createMessage();
SOAPEnvelope messageEnvelope = message.getSOAPPart().getEnvelope();
SOAPBody messageBody = messageEnvelope.getBody();
messageEnvelope.addNamespaceDeclaration(PREFIX, getNameSpace(method));
SOAPElement soapMethod = messageBody.addChildElement(method, PREFIX);
SOAPElement param = soapMethod.addChildElement("id",PREFIX);
param.addTextNode("45");
如何才能删除命名空间?
答案 0 :(得分:1)
对于元素和属性节点:
Node node = ...;
String name = node.getLocalName();
将为您提供节点名称的本地部分。
正如您所提到的,您真的不想从XML中删除命名空间信息。对于您的特定情况,这是一个很好的解决方法,但我会保留命名空间信息。