tutorialspoint parser java xml-parsing stax

java - tutorialspoint - sax parser



StAX: ¿cómo establecer XMLInputFactory.IS_VALIDATING en verdadero? (1)

esta es la primera vez que uso StAX para analizar documentos XML (aún en la etapa de aprendizaje). Durante el proceso para analizar un documento XML usando XMLStreamReader y generar una copia del documento usando XMLStreamWriter, encontré la siguiente advertencia representada como un comentario en el resultado del escritor:

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

Entendí la causa de la advertencia, pero quería que se convirtiera en un error en lugar de convertirse en una advertencia en silencio, así que traté de establecer XMLInputFactory.IS_VALIDATING como verdadero:

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

Pero lo anterior arrojó una excepción para mí:

Excepción en el hilo "main" java.lang.IllegalArgumentException: el valor verdadero de isValidating no es compatible con 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)

Entonces, ¿qué pasa con mi enfoque?

¡Gracias!


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