2009-11-02 18 views
5

esta es la primera vez que uso StAX para analizar documentos XML (aún en la etapa de aprendizaje). Durante el proceso de analizar un documento XML utilizando XMLStreamReader y generar una copia del documento usando XMLStreamWriter, me encontré con la siguiente advertencia representado como un comentario en la salida del escritor:StAX: cómo establecer XMLInputFactory.IS_VALIDATING en true?

<!-- Exception scanning External DTD Subset. True contents of DTD cannot be determined. Processing will continue as XMLInputFactory.IS_VALIDATING == false. --> 

comprendí la causa de la advertencia , pero quería que se convierta en un error en lugar de silencio se convirtió en una advertencia, por lo que entonces traté de establecer XMLInputFactory.IS_VALIDATING true:

XMLInputFactory factory = XMLInputFactory.newInstance(); 
factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE); 

pero lo anterior produjo una excepción para mí:

Excepción en hilo "principal" java.lang.IllegalArgumentException: verdadero valor de isValidating no soportado en com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) en com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) en com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) en com.test. test2.helper.Test.main (Test.java:66)

¿Qué pasa con mi aprobación? h?

Gracias!

Respuesta

5

Parece que la implementación de Sun StAX simplemente no es compatible con la validación DTD. Puede intentar usar Woodstox en su lugar, parece ser compatible con la validación.

Cuestiones relacionadas