StAX - wie XMLInputFactory.IS_VALIDATING auf true setzen?
-
11-09-2019 - |
Frage
Dies ist mein erstes Mal StAX mit für XML-Dokumente Parsen (noch in der Lernphase). Während des Prozesses ein XML-Dokument mit XMLStreamReader zu analysieren und eine Kopie des Dokuments mit XMLStreamWriter zu generieren, traf ich die folgende Warnung als Kommentar in der Ausgabe des Schreibers dargestellt:
<!-- Exception scanning External DTD Subset. True contents of DTD cannot be determined. Processing will continue as XMLInputFactory.IS_VALIDATING == false. -->
verstand ich die Ursache für die Warnung, aber ich wollte es eher ein Fehler werden, als leise eine Warnung wurde, so ist, dann habe ich versucht, XMLInputFactory.IS_VALIDATING auf true zu setzen:
XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE);
Aber die oben hat eine Ausnahme für mich:
Exception in thread "main" java.lang.IllegalArgumentException: wahre Wert von isValidating nicht unterstützt bei com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) beim com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) beim com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) beim com.test.test2.helper.Test.main (Test.java:66)
Also, was ist los mit meinem Ansatz?
Danke!
Lösung
Es sieht aus wie Implementierung von Sun StAX einfach nicht DTD-Validierung unterstützen. Sie könnten versuchen, mit Woodstox statt, wie es scheint Validierung zu unterstützen.