这是我第一次使用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)
那么我的方法有什么问题呢?
谢谢!
1条答案
按热度按时间smdnsysy1#
看起来sun的stax实现不支持dtd验证。您可以尝试改用woodstox,它似乎支持验证。