Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么jaxb文档化的属性com.sun.xml.bind.xmlHeaders不被识别,而是;“内部”;有吗?_Jaxb - Fatal编程技术网

为什么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
  • com.sun.xmlbind:jaxb核心:2.2.11
    plus
    com.sun.xmlbind:jaxb impl:2.2.11
如果您使用的是Maven:

<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规范的一部分)