我正在使用com.ctc.wstx.stax.WstxOutputFactory來生成XML。 我正在運行wstx-asl-3.2.4我應該如何針對W3架構使用Stax2驗證API
我需要開始根據W3模式驗證生成的XML。
當我創建的org.codehaus.stax2.validation.XMLValidationSchemaFactory一個實例這樣
private final static XMLValidationSchemaFactory xsdFact= XMLValidationSchemaFactory.newInstance(XMLValidationSchema.SCHEMA_ID_W3C_SCHEMA);
我得到的錯誤
javax.xml.stream.FactoryConfigurationError: No XMLValidationSchemaFactory implementation class specified or accessible (via system property 'org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c', or service definition under 'META-INF/services/org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c') at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208) at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98)
我可以看到woodstox捆綁只有DTD解析器。 我發現this article 其中包含無益的指令
- Get an instance of XMLValidationSchemaFactory that knows how to parse schemas of the type you need (RelaxNG == rng for this example).
我一直在尋找的Sun Multi-Schema XML Validator它應該包含必要的位狼吞虎嚥到XMLSchemaValidation工廠。
它看起來像我可能能夠使用com.sun.msv.reader.xmlschema.XMLSchemaReader 寫我自己的XMLValidationSchemaFactory的實例,並讓它以這種方式工作。
我的問題是;我真的必須這樣做,還是有一個我沒有找到的預先存在的w3c模式工廠?
也許只是在之後驗證XML 可能會更簡單一些。
對此有何看法?
其實我剛剛搜索了com.ctc.wstx.msv.W3CSchemaFactory。我可能只需要升級我的woodstox版本 – 2010-08-06 10:57:24