Если это ваш класс:
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;
}
}
Тогда имеет смысл, что в корневом элементе есть префикс, потому что вы указали, что корневому элементу соответствует пространство имен, а элементу id - нет.
<ns2:report xmlns:ns2="urn:report">
<id>123</id>
</ns2:report>
Если вы добавите в свою модель класс информации о пакете, вы можете переместить аннотацию @XmlSchema:
@XmlSchema(
namespace = "urn:report",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Тогда реализация JAXB может выбрать использование пространства имен по умолчанию, но учтите, что теперь все элементы имеют квалификацию пространства имен, которая может соответствовать или не соответствовать вашей XML-схеме:
<report xmlns="urn:report">
<id>123</id>
</report>
Для получения дополнительной информации о JAXB и пространствах имен см .: