StAX的 - 如何设置XMLInputFactory.IS_VALIDATING为真?
-
11-09-2019 - |
题
这是使用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_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)
那么,什么是错我的做法?
谢谢!
解决方案
它看起来像Sun公司的StAX的实现只是不支持DTD验证。你可以尝试使用 Woodstox 相反,它似乎支持验证。
不隶属于 StackOverflow