unmarshal parse online jaxbunmarshaller cast bean java xml-parsing jaxb java-8 jaxb2

parse - xml to java object jaxb online



¿Alguna solución alternativa a Xml Unmarshalling Error en Java-8?:"Secure-processing org.xml.sax.SAXNotRecognizedException" (1)

Nota: Este error ya se ha discutido aquí y también se han sugerido varias soluciones para deshacerse de jar que entra en conflicto con la implementación predeterminada de java-8.

Mi pregunta es una extensión de ese problema.

En aras de la completitud, aquí está la stacktrace a la que también me enfrento, cuando ejecuto el código con java-8:

Feb 29, 2016 12:06:41 PM com.sun.xml.internal.bind.v2.util.XmlFactory createParserFactory SEVERE: null org.xml.sax.SAXNotRecognizedException: http://javax.xml.XMLConstants/feature/secure-processing at org.apache.xerces.parsers.AbstractSAXParser.setFeature(AbstractSAXParser.java:1487) at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:145) at org.apache.xerces.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:128) at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:112) at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:140) at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:121) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:276)

Para demostrar que el / los jar (s) en conflicto son realmente el problema (como se describe en el enlace compartido anteriormente), saqué el código relevante en un proyecto diferente y ejecuté el código usando java-8 (es decir, sin ningún error) número mínimo de jarras Hasta aquí todo bien.

Y ahora la consulta:

En mi caso, mi proyecto heredado usa aproximadamente 2-3 jarrones conflictivos conocidos que se usan por varias razones. Sin embargo, existe este nuevo módulo que utiliza jaxb dirigido por anotación para el procesamiento de oxm.

El problema es : no puedo deshacerme de esos archivos antiguos y conflictivos, ya que eso hace que el 10% de la base de código no sea compilable. Sin embargo, al mismo tiempo, no deseo deshacerme de la implementación de jaxb / oxm en el nuevo módulo también.

¿Hay alguna forma de que de alguna manera pueda decirle a JVM que ignore los archivos antiguos y que use la implementación predeterminada que se envía con java-8 cuando la ejecución del código pasa por este nuevo módulo?


Un enfoque alternativo podría ser utilizar el analizador StAX para obtener el XML como un XMLStreamReader y luego JAXB desempaquetar eso.

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(reader); unmarshaller.unmarshal(xmlStreamReader);