stax-如何设置xmlinputfactory.is\u validating为true?

yqkkidmi  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(373)

这是我第一次使用stax解析xml文档(仍处于学习阶段)。在使用xmlstreamreader解析xml文档并使用xmlstreamwriter生成文档副本的过程中,我遇到了以下警告,该警告在编写器的输出中表示为注解:

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

我了解警告的原因,但我希望它成为一个错误,而不是默默地成为一个警告,因此我尝试将xmlinputfactory.is\u validating设置为true:

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

但上述情况给我带来了一个例外:
线程“main”java.lang.illegalargumentexception中出现异常:com.sun.org.apache.xerces.internal.impl.propertymanager.setproperty(propertymanager)不支持isvalidating的真值。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)
那么我的方法有什么问题呢?
谢谢!

smdnsysy

smdnsysy1#

看起来sun的stax实现不支持dtd验证。您可以尝试改用woodstox,它似乎支持验证。

相关问题