如何属性添加到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>
谁能帮我!
答
以下代码应该会使您预期的结果。
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>
在你的参考例中,命名空间被施加到SdcPDU。这将是应用于SdcPDU元素的子元素的默认名称空间。我不知道为什么命名空间被附加到子元素。但最终它和你预期的结果是一样的。 – Renjith 2014-09-26 16:37:11