我用的时候 @XmlSchema(attributeFormDefault = XmlNsForm.QUALIFIED, ...)
要么@XmlAttribute(namespace = "sample.com/y", ...)
JAXB无视 @XmlSchema(namespace = "sample.com/x", ...)
而不是:
<a xmlns="sample.com/y" xmlns:ns0="sample.com/y">
<b ns0:att=""/>
</a>
Run Code Online (Sandbox Code Playgroud)
生成类似的东西:
<ns1:a xmlns:ns1="sample.com/x" xmlns:ns0="sample.com/y">
<ns1:b ns0:att=""/>
</ns1:a>
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?有没有办法纠正这个?
EclipseLink JAXB (MOXy)根据属性形式限定以不同方式处理元素的前缀限定(如下所示)。
命名空间限定没有错误,但我同意尽可能使用默认命名空间更好。您可以使用以下错误跟踪此问题的进展:
A
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;
}
}
Run Code Online (Sandbox Code Playgroud)
演示
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);
}
}
Run Code Online (Sandbox Code Playgroud)
未设置 attributeFormDefault 的 package-info
@XmlSchema(
namespace = "sample.com/x"
, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package forum6808921;
import javax.xml.bind.annotation.*;
Run Code Online (Sandbox Code Playgroud)
输出:
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="sample.com/x">
<b>Hello World</b>
</a>
Run Code Online (Sandbox Code Playgroud)
设置了 attributeFormDefault 的 package-info
@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.*;
Run Code Online (Sandbox Code Playgroud)
输出:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:a xmlns:ns0="sample.com/x">
<ns0:b>Hello World</ns0:b>
</ns0:a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10553 次 |
| 最近记录: |