StAX - как установить XMLInputFactory.ЯВЛЯЕТСЯ ли значение VALIDATING равным true?
-
11-09-2019 - |
Вопрос
это мой первый раз, когда я использую StAX для синтаксического анализа XML-документов (все еще на стадии изучения).Во время процесса синтаксического анализа XML-документа с помощью XMLStreamReader и создания копии документа с помощью XMLStreamWriter я столкнулся со следующим предупреждением, представленным в виде комментария в выходных данных программы writer:
<!-- 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);
Но вышеприведенное вызвало для меня исключение:
Исключение в потоке "main" 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)
Так что же не так с моим подходом?
Спасибо!
Решение
Похоже, что реализация Sun StAX просто не поддерживает проверку DTD.Вы могли бы попробовать использовать Вудстокс вместо этого, похоже, он поддерживает проверку.