我正在使用 com.ctc.wstx.stax.WstxOutputFactory 生成XML。
我正在运行wstx-asl-3.2.4
我需要开始根据W3架构验证生成的XML。
当我创建的实例时org.codehaus.stax2.validation.XMLValidationSchemaFactory 像这样private final static XMLValidationSchemaFactory xsdFact= XMLValidationSchemaFactory.newInstance(XMLValidationSchema.SCHEMA_ID_W3C_SCHEMA);
我得到了错误
javax.xml.stream.FactoryConfigurationError:未指定或无法访问XMLValidationSchemaFactory实现类(通过系统属性“org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c”或“META-INF / services / org.codehaus.stax2”下的服务定义)。 Validation.XMLValidationSchemaFactory.w3c')
在org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208)
在org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98)
我可以看到woodstox仅与DTD解析器捆绑在一起。
我发现this article
其中包含无用的说明
我一直在看Sun Multi-Schema XML Validator,它应该包含连接到XMLSchemaValidation工厂所需的位。
看来我可以使用 com.sun.msv.reader.xmlschema.XMLSchemaReader
编写我自己的XMLValidationSchemaFactory实例,并使它以这种方式工作。
我的问题是;我真的必须这样做吗,还是找不到我以前找不到的w3c模式工厂?
生成XML之后,仅验证XML也许会更简单。
对此有何看法?
最佳答案
我已升级到Woodstox 4.0.8,捆绑了W3CSchemaFactory,一切都很好。