StAX - как установить XMLInputFactory.IS_VALIDATING в true? - PullRequest
5 голосов
/ 02 ноября 2009

Я впервые использую StAX для анализа XML-документов (все еще на стадии обучения). В процессе анализа XML-документа с использованием XMLStreamReader и создания копии документа с использованием XMLStreamWriter я обнаружил следующее предупреждение, представленное в виде комментария в выводе средства записи:

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

Я понял причину предупреждения, но хотел, чтобы оно стало ошибкой, а не молча стало предупреждением, поэтому я попытался установить для XMLInputFactory.IS_VALIDATING значение true:

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

Но вышесказанное бросило мне исключение:

Исключение в теме "главная" java.lang.IllegalArgumentException: истинное значение isValidating не поддерживается в 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) в com.test.test2.helper.Test.main (Test.java:66)

Так что же не так с моим подходом?

Спасибо!

1 Ответ

5 голосов
/ 02 ноября 2009

Похоже, что реализация Sun StAX просто не поддерживает проверку DTD. Вместо этого можно попробовать использовать Woodstox , похоже, он поддерживает проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...