Ist dies Ihre Klasse:
package example;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="report",namespace="urn:report")
public class Root {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Dann macht es Sinn, dass es ein Präfix auf dem Root-Element ist, weil Sie angegeben haben, dass das „root“ Element-Namespace qualifiziert ist und die „id“ Element ist nicht.
@XmlSchema(
namespace = "urn:report",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Dann wird die JAXB Implementierung können die Standard-Namespace, aber beachten Sie nutzen jetzt alle:
<ns2:report xmlns:ns2="urn:report">
<id>123</id>
</ns2:report>
Wenn Sie ein Paket-info Klasse zu Ihrem Modell hinzufügen, können Sie die @XmlSchema Anmerkung leverate die Elemente sind Namespace qualifiziert, das XML-Schema entsprechen kann oder nicht:
<report xmlns="urn:report">
<id>123</id>
</report>
weitere Informationen zu JAXB und Namensbereichen:
Wenn es zwei Namespaces im Objekt gibt, wird es wie '', dann Einige Teile verwenden '
navins
@navins - Können Sie dies als neue Frage posten? –
ok, siehe http://stackoverflow.com/questions/25518253/jaxb-generated-xml-remove-namespace-prefix – navins