gpt4 book ai didi

java - 如何在存在另一个提供程序的情况下使用 java 内部 XMLStreamWriter

转载 作者:数据小太阳 更新时间:2023-10-29 02:35:44 25 4
gpt4 key购买 nike

我正在使用此代码获取 XMLStreamWriter:

javax.xml.stream.XMLOutputFactory
.newInstance()
.createXMLStreamWriter( outputStream )

最近我不得不将 jaxws 的 jar 包含到我的系统中。之后,XmlStreamWriter 实现从 com.sun.xml.internal.stream.writers.XMLStreamWriterImpl 更改为 com.ctc.wstx.sw.SimpleNsStreamWriter。此类产生与 Java 内部实现不同的输出。

如何通过显式使用 com.sun.xml.internal.stream.XMLOutputFactoryImpl 强制 java 使用内部实现而不将我的代码绑定(bind)到 java 6? Java 7 使用不同的 XMLStreamWriter,我希望我的代码也能在 java 7 上运行。


我试过这个:

XMLOutputFactory.newFactory( 
"com.sun.xml.internal.stream.XMLOutputFactoryImpl",
getClass().getClassLoader()
);

它与 Oracle JDK 6 一起工作,但与 JDK 7 一起工作

javax.xml.stream.FactoryConfigurationError: 
Provider for com.sun.xml.internal.stream.XMLOutputFactoryImpl cannot be found

最佳答案

根据javadoc这就是工厂的运作方式:

  • 使用 javax.xml.stream.XMLOutputFactory 系统属性。
  • 使用 JRE 目录中的属性文件“lib/stax.properties”。
  • 使用服务 API(详见 JAR 规范)
  • 平台默认的 XMLOutputFactory 实例。

所以要确保使用sun的内部实现,我认为最好的办法是做到以下几点:

System.setProperty("javax.xml.stream.XMLOutputFactory", "com.sun.xml.internal.stream.XMLOutputFactoryImpl");
XMLOutputFactory.newInstance();

关于java - 如何在存在另一个提供程序的情况下使用 java 内部 XMLStreamWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19553324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com