2011-02-22 23 views
5

Tengo un analizador stax woodstox y y SE SE 1.6 stax en el classpath pero woodstox parece ser seleccionado por defecto. Sin embargo, en ciertos casos, me gustaría utilizar el analizador sintáctico de Java por defecto. ¿Hay alguna manera de especificar qué implementación usar?Cómo especificar qué analizador de stax para usar

Respuesta

7

La manera más fácil es simplemente instanciar directamente la que desee; no es necesario utilizar XMLInputFactory.newInstance(); para Woodstox crearía una instancia com.ctc.wstx.stax.WstxInputFactory. Para la implementación de Sun, es algo más (com.sun.sjsxp o similar): puede ver el nombre de la clase si crea una instancia a través de Stax API cuando Woodstox jar no está en classpath.

Pero si desea utilizar indirectamente, se usa el valor de la propiedad del sistema "javax.xml.stream.XMLInputFactory", según javadocs: value es el nombre de la clase para crear instancias.

0

Tuve un problema similar, mi jboss local tiene woodstox en la ruta pero el servidor remoto no (o algo no está configurado correctamente). Así que elegí crear una instancia de la implementación de referencia:

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