Java 不带命名空间的SOAP前缀

Java 不带命名空间的SOAP前缀,java,soap,namespaces,prefix,Java,Soap,Namespaces,Prefix,这就是我想要的: <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> </

这就是我想要的:

<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>

如何仅删除命名空间?

对于元素和属性节点:

Node node = ...;
String name = node.getLocalName();
将为您提供节点名称的本地部分


正如您所提到的,您确实不想从XML中删除名称空间信息。对于您的特定情况,这是一个很好的解决方法,但我会保留名称空间信息不变。

您发布的xml格式不正确。无论如何,尝试替换messageBody.addChildElement(方法,前缀);使用messageBody.addChildElement(envelope.createName(方法、前缀、getNameSpace(方法));谢谢你的帮助……嗯……不!。。。。是一样的-"-"。。。。
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");
Node node = ...;
String name = node.getLocalName();