我正在使用com.ctc.wstx.stax.WstxOutputFactory来生成 XML。我正在运行 wstx-asl-3.2.4
我需要开始针对 W3 Schema 验证生成的 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. org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208) 在 org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98) 的验证.XMLValidationSchemaFactory.w3c')
我可以看到woodstox 只捆绑了一个DTD 解析器。我发现这篇文章 包含无用的说明
- 获取一个 XMLValidationSchemaFactory 的实例,该实例知道如何解析您需要的类型的模式(本例中为 RelaxNG == rng)。
我一直在研究Sun Multi-Schema XML Validator,它应该包含连接到 XMLSchemaValidation 工厂所需的位。
看起来我可以使用com.sun.msv.reader.xmlschema.XMLSchemaReader 来编写我自己的 XMLValidationSchemaFactory 实例并让它以这种方式工作。
我的问题是;我真的必须这样做吗,还是我找不到预先存在的 w3c 模式工厂?
也许在我生成XML之后验证它会更简单。
对此有何看法?