这是使用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 相反,它似乎支持验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top