2011-02-22 65 views
5

我在类路径中有一个woodstox和java SE 1.6 stax解析器,但woodstox似乎默认选中。 但是在某些情况下,我想使用默认的Java stax解析器。有什么方法可以指定使用哪个实现?如何指定要使用哪个stax解析器

回答

7

最简单的方法是直接实例化一个你想要的 - 没有必要使用XMLInputFactory.newInstance();对于Woodstox,你会实例化com.ctc.wstx.stax.WstxInputFactory。对于Sun实现来说,它是另外一个东西(com.sun.sjsxp或类似的东西) - 如果您在Woodstox jar不在classpath中时通过Stax API实例化它,则可以看到类名。

但是,如果您绝对要使用间接寻址,则系统属性“javax.xml.stream.XMLInputFactory”的值将按照javadocs使用:value是要实例化的类的名称。

0

我有一个类似的问题,我的本地jboss在路径中有woodstox,但远程服务器没有(或者没有正确配置)。所以我选择实例化参考实现:

 // Use BEA streaming parser to avoid runtime exceptions 
     XMLOutputFactory xmlof = new XMLOutputFactoryBase();