注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。
您描述的问题似乎发生在 EclipseLink JAXB (MOXy) 中,而不是 JAXB 参考实现中。MOXy 是 WebLogic 12.1.1 中的默认 JAXB 提供程序(请参阅: http ://blog.bdoughan.com/2011/12/eclipselink-moxy-is-jaxb-provider-in.html )。您可以使用以下错误跟踪我们在此问题上的进展。如果您是 WebLogic 客户,请输入错误,以便您收到相应的补丁。
Java 模型
package forum13646211;
import javax.xml.bind.annotation.XmlElement;
public class Root {
private int[] testArrayInt;
@XmlElement(type=Integer.class)
public int [] getTestArrayInt () {
return testArrayInt;
}
public void setTestArrayInt(int[] array) {
this.testArrayInt = array;
}
}
架构(由 JAXB RI 生成)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="root">
<xs:sequence>
<xs:element name="testArrayInt" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
模式(由 EclipseLink JAXB (MOXy) 生成)
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="root">
<xsd:sequence>
<xsd:element name="testArrayInt" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
模式生成代码
package forum13646211;
import java.io.IOException;
import javax.xml.bind.*;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
jc.generateSchema(new SchemaOutputResolver() {
@Override
public Result createOutput(String namespaceUri,
String suggestedFileName) throws IOException {
StreamResult result = new StreamResult(System.out);
result.setSystemId(suggestedFileName);
return result;
}
});
}
}