这是我第一次使用 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);
但上面的内容对我来说是一个例外:
线程“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(测试.java:66)
那么我的方法有什么问题呢?
Thanks!
看起来 Sun 的 StAX 实现不支持 DTD 验证。你可以尝试使用Woodstox http://woodstox.codehaus.org/相反,它似乎支持验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)