Pregunta

esta es mi primera vez usando StAX para analizar documentos XML (todavía 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:

 <!-- 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);

Sin embargo, lo anterior produjo una excepción para mí:

  

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

Así que lo que está mal con mi enfoque?

Gracias!

¿Fue útil?

Solución

Parece que la implementación de Sun StAX simplemente no soporta la validación DTD. Usted podría tratar de usar Woodstox en cambio, parece apoyar la validación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top