如何属性添加到SOAP元素在Java中正确

如何属性添加到SOAP元素在Java中正确

问题描述:

我想属性添加到肥皂元素像如何属性添加到SOAP元素在Java中正确

<SdcPDU xmlns="urn:sdcf:sdc:xsd:faa.2.0"> 
<Revision>2.0.2</Revision> 
</SdcPDU> 

Java代码

MessageFactory messageFactory = MessageFactory.newInstance(); 
SOAPMessage soapMessage = messageFactory.createMessage(); 
... 
SOAPElement sdcPDU = soapBody.addChildElement("SdcPDU"); 
Name sdcPDUPduName = envelope.createName("xmlns"); 
sdcPDU.addAttribute(sdcPDUPduName, "urn:sdcf:sdc:xsd:faa.2.0"); 
SOAPElement revision = sdcPDU.addChildElement("Revision"); 
revision.addTextNode(2.0.2); 
... 
... 
soapMessage.saveChanges(); 

但输出消息看起来像

<SdcPDU xmlns=""> 
    <Revision xmlns="urn:sdcf:sdc:xsd:faa.2.0">2.0.2</Revision> 
</SdcPDU> 

谁能帮我!

+0

在你的参考例中,命名空间被施加到SdcPDU。这将是应用于SdcPDU元素的子元素的默认名称空间。我不知道为什么命名空间被附加到子元素。但最终它和你预期的结果是一样的。 – Renjith 2014-09-26 16:37:11

以下代码应该会使您预期的结果。

SOAPElement sdcPDU = soapBody.addChildElement("SdcPDU","","urn:sdcf:sdc:xsd:faa.2.0"); 
    SOAPElement revision = sdcPDU.addChildElement("Revision"); 
    revision.addTextNode("2.0.2"); 

响应:

<SOAP-ENV:Body> 
    <SdcPDU xmlns="urn:sdcf:sdc:xsd:faa.2.0"> 
     <Revision>2.0.2</Revision> 
    </SdcPDU> 
</SOAP-ENV:Body>