Hallo,
ich möchte mittels Java einen SOAP-Request erstellen und verwende dazu das JWSDP. Der SOAP-Request muss nun folgendermaßen aussehen:
12345
Im Body befindet sich also ein Element, für das ein spezieller XML-Namespace definiert ist. Mein Problem ist nun, dass ich nicht weiß, wie ich diesen xmlns aus dem Java-Code setzen kann. Probiert habe ich es mit:
SOAPElement element = body.addChildElement(„OrderID“);
element.addAttribute(new QName(„xmlns“),„http://localhost/bla“);
Das Ergebnis sieht dann aber so aus: 12345 Also der Wert ist leer.
Hat jemand eine Idee wie ich dieses Attribut setzen kann?
Grüße,
Robert
SOAPElement element = body.addChildElement(„OrderID“);
element.addAttribute(new
QName(„xmlns“),„http://localhost/bla“);
xmlns ist ein spezielles Attribut bei XML.
Probiers doch mal mit:
element.addNamespaceDeclaration(prefix, uri);
http://java.sun.com/j2ee/1.4/docs/api/javax/xml/soap…
Damit kannst du den Namespace setzen. Um den Default-Namespace zu setzen musst du als Prefix einen Leerstring übergeben.
Hallo,
xmlns ist ein spezielles Attribut bei XML.
Probiers doch mal mit:
element.addNamespaceDeclaration(prefix, uri);
Damit kannst du den Namespace setzen. Um den Default-Namespace
zu setzen musst du als Prefix einen Leerstring übergeben.
Das hatte ich auch bereits probiert, also mit
element.addNameSpaceDeclaration("",„http://bla“);
Allerdings ist das Ergebnis identisch zu dem vorher, d.h. der Wert für xmlns ist dann leer:
12345
Probier mal statt dem nachträglichen hinzufügen des Namespaces zu dem Element, dass du das Element gleich mit dem richtigen Namespace erstellst.
Beispielcode:
import java.io.IOException;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPMessage;
public class Test {
public static void main(String[] args) {
try {
// create message
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
// create body
SOAPBody body = message.getSOAPBody();
body.addNamespaceDeclaration("", "http://body-default-ns");
// create soap element with default namespace set
SOAPFactory factory = SOAPFactory.newInstance();
<u>SOAPElement element = factory.createElement("somelement", "",</u>
<u>"http://somelement-default-ns");</u>
body.addChildElement(element);
message.saveChanges();
message.writeTo(System.out);
} catch (SOAPException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Das ergibt zumindest bei mir die Ausgabe:
xmlns="http://somelement-default-ns"/\>