Ich benutze Axis 1.4 und ich möchte eine zusätzliche Ebene innerhalb der XML eines SOAP-Rumpfes innerhalb des Clients einfügen. Es gibt eine Server-Antwort, die ich mit einer Unterklasse von javax.xml.rpc.handler.GenericHandler im Client bekommen:Ändern der XML-Struktur in SOAP-Handler
Jetzt versuche ich, mit
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");
Auf diese die richtige Botschaft Typ zu erkennen Punkt Ich brauche ein neues Tag, das alle vorhandenen <centres>
Tags enthält. Die Liste aller <centres>
Tags, die ich bereits in cl
gespeichert habe, aber wie kann ich dem <projectDataReturn>
Tag neue Knoten hinzufügen? Und wie kann ich die vorhandenen <centre>
Tags auf das neue Tag verschieben ?. Ich habe es versucht, mit
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;
Aber es entsteht ein Soap
javax.xml.rpc.JAXRPCException: javax.xml.soap.SOAPException: Could not get document from SOAPEnvelope
Was ist los?