StAX - как установить XMLInputFactory.ЯВЛЯЕТСЯ ли значение VALIDATING равным true?

StackOverflow https://stackoverflow.com/questions/1659094

  •  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.Вы могли бы попробовать использовать Вудстокс вместо этого, похоже, он поддерживает проверку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top