Si ceci est votre classe:
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;
}
}
alors il est logique qu'il y ait un préfixe sur l'élément racine, parce que vous avez spécifié que l'élément « racine » élément est espace de nom qualifié et le « id » n'est pas.
<ns2:report xmlns:ns2="urn:report">
<id>123</id>
</ns2:report>
Si vous ajoutez une classe package-info à votre modèle, vous pouvez Leverate l'annotation @XmlSchema:
@XmlSchema(
namespace = "urn:report",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Ensuite, la mise en œuvre JAXB peut choisir de tirer parti de l'espace de noms par défaut, mais notez maintenant tous des éléments sont espace de noms qui peuvent ou qualifiés ne peuvent pas correspondre à votre schéma XML:
<report xmlns="urn:report">
<id>123</id>
</report>
Pour plus d'informations sur JAXB et namespaces voir:
S'il y a deux espaces de noms dans l'objet, il devient comme ', puis une partie utilisera '
navins
@navins - Pouvez-vous poster ceci comme une nouvelle question? –
ok, voir http://stackoverflow.com/questions/25518253/jaxb-generated-xml-remove-namespace-prefix – navins