显然在JAXB的第2版中 - 验证器类已被弃用 - 这是否意味着编组器会自动验证您的XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的XML!任何人都可以给我一些建议,关于如何验证编组XML以确保其符合XSD架构。是否可以使用JAXB 2.0验证编组的XML?
非常感谢。
显然在JAXB的第2版中 - 验证器类已被弃用 - 这是否意味着编组器会自动验证您的XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的XML!任何人都可以给我一些建议,关于如何验证编组XML以确保其符合XSD架构。是否可以使用JAXB 2.0验证编组的XML?
非常感谢。
JAXB 2.0通过使用JAXP 1.3模式验证框架扩展了验证功能。
当你做之前:
unmarshaller.setValidating(true);
现在你需要做的:
SchemaFactory sf = SchemaFactory.newInstance(
javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("myschema.xsd"));
unmarshaller.setSchema(schema);
如果传递null到setSchema
,它禁用验证。
请检查this reference。
如果你正在寻找验证Java对象生成根据模式是有效的XML,看看JAXB的验证项目:
https://jaxb-verification.dev.java.net/
这是一个JAXB RI插件XJC将产生XML模式的ObjectVerifier实现。这避免了为了验证XML而必须编组Java对象。
你把一个MARSHALLER相同的代码 - 这个代码看起来像是一个UNMARSHALLER ... – Vidar 2009-04-30 10:01:32