2009-11-02 6 views
5

C'est la première fois que j'utilise StAX pour analyser des documents XML (encore en phase d'apprentissage). Au cours du processus pour analyser un document XML à l'aide XMLStreamReader et générer une copie du document à l'aide XMLStreamWriter, je rencontrais l'avertissement suivant représenté comme un commentaire dans la sortie de l'écrivain:StAX - comment définir XMLInputFactory.IS_VALIDATING sur true?

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

je compris la cause de l'avertissement , mais je voulais devenir une erreur plutôt que de silence est devenu un avertissement, alors j'essayé de mettre XMLInputFactory.IS_VALIDATING à true:

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

mais ce qui précède a lancé une exception pour moi:

Exception in thread "main" java.lang.IllegalArgumentException: valeur réelle de isValidating pas supporté à com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) à com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) à com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) à TestCom. test2.helper.Test.main (Test.java:66)

Alors quel est le problème avec mon approche h?

Merci!

Répondre

5

Il semble que l'implémentation StAX de Sun ne supporte pas la validation DTD. Vous pouvez essayer d'utiliser Woodstox à la place, il semble prendre en charge la validation.

Questions connexes