【问题标题】:StAX - how to set XMLInputFactory.IS_VALIDATING to true?StAX - 如何将 XMLInputFactory.IS_VALIDATING 设置为 true?
【发布时间】:2010-12-12 03:49:47
【问题描述】:

这是我第一次使用 StAX 解析 XML 文档(仍处于学习阶段)。在使用 XMLStreamReader 解析 XML 文档并使用 XMLStreamWriter 生成文档副本的过程中,我遇到了以下警告,该警告表示为 writer 输出中的注释:

 <!-- 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 的真实值 not 支持在 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)

那么我的方法有什么问题?

谢谢!

【问题讨论】:

    标签: java xml-parsing stax


    【解决方案1】:

    看起来 Sun 的 StAX 实现不支持 DTD 验证。您可以尝试改用Woodstox,它似乎支持验证。

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 2016-02-05
      • 2020-06-04
      • 1970-01-01
      • 2020-06-27
      • 2016-12-29
      • 1970-01-01
      • 2020-06-03
      • 2021-12-05
      相关资源
      最近更新 更多