为什么jaxb文档化的属性com.sun.xml.bind.xmlHeaders不被识别,而是;“内部”;有吗?
我对属性被描述为为什么jaxb文档化的属性com.sun.xml.bind.xmlHeaders不被识别,而是;“内部”;有吗?,jaxb,Jaxb,我对属性被描述为com.sun.xml.bind.xmlHeaders的位置感到困惑,但是当我尝试它时: javax.xml.bind.PropertyException: name: com.sun.xml.bind.xmlHeaders 但是使用com.sun.xml.internal.bind.xmlHeaders(注意:internal)是可行的 所以我的问题是关于这一点的基本原理。我看的是错误的文档吗?内部从何而来 public static void main(String[] a
com.sun.xml.bind.xmlHeaders
的位置感到困惑,但是当我尝试它时:
javax.xml.bind.PropertyException: name: com.sun.xml.bind.xmlHeaders
但是使用com.sun.xml.internal.bind.xmlHeaders
(注意:internal
)是可行的
所以我的问题是关于这一点的基本原理。我看的是错误的文档吗?内部
从何而来
public static void main(String[] args) throws JAXBException {
MyElement myxml = new MyElement();
JAXBContext context = JAXBContext.newInstance(MyElement.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders","");
//marshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders","<DOCTYPE>");
marshaller.marshal(myxml, System.out);
}
publicstaticvoidmain(字符串[]args)抛出jaxbeexception{
MyElement myxml=新的MyElement();
JAXBContext context=JAXBContext.newInstance(MyElement.class);
Marshaller=context.createMarshaller();
setProperty(marshaller.JAXB_格式的_输出,Boolean.TRUE);
setProperty(“com.sun.xml.bind.xmlHeaders”,”;
//setProperty(“com.sun.xml.internal.bind.xmlHeaders”,”;
marshaller.marshall(myxml,System.out);
}
确保类路径上有正确的JAXB实现。显然,除了JDK附带的“参考实现”之外,还有几个“参考实现”可供选择
属性:com.sun.xml.internal.bind.xmlHeaders
- jdk8版本
javax.xml.bind:jaxbapi:2.2.11
com.sun.xml.bind.xmlHeaders
org.glassfish.jaxb:jaxb运行时:2.2.11
pluscom.sun.xmlbind:jaxb核心:2.2.11
com.sun.xmlbind:jaxb impl:2.2.11
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.2.11</version>
</dependency>
您还可以获得com.sun.xml.bind.xmlHeaders
但如果您使用:
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
javax.xml.bind
jaxb api
2.2.11
您只能获得com.sun.xml.internal.bind.xmlHeaders
它们都是JAXB 2.2.11,但来自不同的供应商/提供者,因此它们在诸如所支持的marshaller属性等方面有所不同(因为它们中的一些实际上不是JAXB规范的一部分)