Wie den XML-Namespace setzen?

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"/\>