0
我使用Axis 1.4,並且我想在客戶端中的SOAP主體的XML中插入額外的級別。有一個服務器響應,我可以用javax.xml.rpc.handler.GenericHandler的客戶端中的子類得到:更改SOAP處理程序中的XML結構
現在,我嘗試用
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage message = smc.getMessage();
SOAPBody sb = message.getSOAPBody();
NodeList nl = sb.getElementsByTagName("projectDataReturn");
if (nl.getLength() == 0) {
return true; // wrong message
}
log.info("we have a projectDataReturn structure");
NodeList cl = sb.getElementsByTagName("centres");
if (cl.getLength() == 0) {
return true; // no centres
}
log.info("we have centres tags");
在此認識到正確的信息類型點我需要一個新的標籤,其中包含所有現有的<centres>
標籤。已存儲在cl
中的所有<centres>
標記的列表已經存在,但我如何將新節點添加到<projectDataReturn>
標記?以及如何將現有<centre>
標籤移動到新標籤?我曾與
Document doc = cl.item(0).getOwnerDocument();
Element array = doc.createElement("centres");
array.setAttribute("xmlns:ns5", "http://beans.eo.xyz.de");
array.setAttribute("soapenc:arrayType", "ns5:CentreBean[" + cl.getLength() + "]");
array.setAttribute("xsi:type", "soapenc:Array");
array.setAttribute("xmlns:soapenc", "http://schemas.xmlsoap.org/soap/encoding/");
nl.item(0).appendChild(array);
// move existing <centre> tags here
return true;
嘗試過,但它產生的SoapException
javax.xml.rpc.JAXRPCException: javax.xml.soap.SOAPException: Could not get document from SOAPEnvelope
有什麼不對?