我应该如何针对W3架构使用Stax2验证API

时间:2010-08-06 10:50:57

标签: java xsd stax woodstox

我正在使用 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.validation.XMLValidationSchemaFactory.w3c“)       在org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208)       at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98)

我可以看到woodstox仅与DTD解析器捆绑在一起。 我找到了this article 其中包含无用的指令

  
      
  1. 获取XMLValidationSchemaFactory的实例,该实例知道如何解析所需类型的模式(本例中为RelaxNG == rng)。
  2.   

我一直在查看Sun Multi-Schema XML Validator,它应该包含连接到XMLSchemaValidation工厂所需的位。

看起来我可以使用 com.sun.msv.reader.xmlschema.XMLSchemaReader 编写我自己的XMLValidationSchemaFactory实例并让它以这种方式工作。

我的问题是;我真的必须这样做,还是有一个我未能找到的预先存在的w3c架构工厂?

在生成之后验证XML 可能会更简单。

对此有何看法?

1 个答案:

答案 0 :(得分:3)

我升级到Woodstox 4.0.8,W3CSchemaFactory捆绑在一起,一切都很好。