2014-09-26 57 views
2

我想屬性添加到肥皂元素像如何屬性添加到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

回答

3

以下代碼應該會使您預期的結果。

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>