2009-11-02 13 views
5

Dies ist das erste Mal, dass ich StAX zum Parsen von XML-Dokumenten verwende (noch in der Lernphase). Während des Prozesses ein XML-Dokument mit XMLStreamReader zu analysieren und eine Kopie des Dokuments mit XMLStreamWriter zu erzeugen, mir die folgenden Warnung als Kommentar in der Ausgabe des Schreibers dargestellt begegnet:StAX - Wie setze ich XMLInputFactory.IS_VALIDATING auf true?

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

verstand ich die Ursache der Warnung , aber ich wollte es ein Fehler werden, anstatt still 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 warf für mich eine Ausnahme:

Exception in thread "main" java.lang.IllegalArgumentException: wahre Wert com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) bei nicht unterstützt isValidating bei com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) bei com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) bei com.test. test2.helper.Test.main (Test.java:66)

Also was ist falsch mit meinem approac h?

Danke!

Antwort

5

Es sieht so aus, als würde Suns StAX-Implementierung die DTD-Validierung nicht unterstützen. Sie könnten stattdessen versuchen, Woodstox zu verwenden, es scheint die Validierung zu unterstützen.