EclipseLink JAXB (MOXy) está manejando la calificación de prefijo para los elementos de forma diferente dependiendo de la calificación de la forma del atributo (como se muestra a continuación).
La calificación del espacio de nombres no es incorrecta, pero acepto que el uso del espacio de nombres predeterminado es mejor cuando es posible. Puede hacer un seguimiento de los progresos en este tema con el siguiente fallo:
Un
package forum6808921;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class A {
private String b;
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
demostración
package forum6808921;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(A.class);
A a = new A();
a.setB("Hello World");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(a, System.out);
}
}
paquete de información-sin attributeFormDefault establece
@XmlSchema(
namespace = "sample.com/x"
, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package forum6808921;
import javax.xml.bind.annotation.*;
Salida:
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="sample.com/x">
<b>Hello World</b>
</a>
paquete de información con attributeFormDefault conjunto
@XmlSchema(
namespace = "sample.com/x"
, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
, attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package forum6808921;
import javax.xml.bind.annotation.*;
Salida:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:a xmlns:ns0="sample.com/x">
<ns0:b>Hello World</ns0:b>
</ns0:a>
Gracias para confirmar el problema. –