我使用xjc将XML转换为JAXB元素,并执行编组操作。但是,xml中的一些字段没有根据xsd进行验证。
例如:我已经给出了一个作为整数的字段,但其接受字符串并没有抛出验证错误。
JAXB(JSR-222)在默认情况下被设计为在文档的一部分与映射不直接对应时继续进行。您可以指定ValidationEventHandler
的一个实例,以通知任何转换问题。有关更多验证,您可以在解组器
上设置架构
的实例(请参阅:http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html).
类定义为: 要加载的xml示例部分: 我创建了一个验证收集器,以显示针对架构解封xml文件过程中所有验证错误,但结果令人困惑:验证收集器将继承我的RemoteHost的每个类的验证错误显示为: 元素“host firstsubtype”不能有字符或元素信息项[children],因为该类型的内容类型为空。 元素“Other HostType”必须没有字符或元素信息项[childrens],因为该类
问题内容: 我尝试使用Jaxb在变量中获取验证消息。从此处尝试示例http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html 我的代码: 但是什么也没发生。我究竟做错了什么 ? 问题答案: 以下内容应有所帮助: JAXB2ValidationEve
问题内容: 我有工作,并为我解编和编组XML转换为Java对象,反之亦然。现在,我试图根据我们的模式(test.xsd)来验证我们的XML。假设我的XML中缺少任何必填字段,那么我想根据模式test.xsd验证XML后知道哪个字段缺失。 如何根据test.xsd模式验证XML。我的test.xsd模式路径是- C:\ workspace \一\二\三\ src \ main \ java \ co
问题内容: 显然在JAXB的版本2中-验证器类已被弃用- 这是否意味着编组器会自动验证您的XML?如果是这样,它似乎并没有抱怨我正在形成一些不正确的XML!谁能给我一些有关如何验证编组XML以确保其符合XSD架构的建议。 非常感谢。 问题答案: 通过使用JAXP 1.3 Schema Validation Framework,在JAXB 2.0中扩展了验证功能。 在哪里之前: 现在您需要执行以下操
使用JAXB解封整个XML时,可以设置XML模式以在解析期间启用验证: 另一方面,当您从XML逐个解封的列表时(例如,为了减少内存使用),该方法失败(因为架构只接受根),但有一个例外: 即使在XSD中定义良好,它也会失败。是否有任何选项可以启用嵌套对象验证?请注意,定义新模式是一个糟糕的选项,因为对于由其他人维护的应用程序来说,XSD是外部的。
Overview JAXB的非官方文档: http://jaxb.java.net/guide/ SpringSide-Core中的JaxbMapper Jaxb中最讨厌的地方,是需要在构造JAXBContext时,预先设定可能会处理的Root Element Types。 Springside参考Spring里的做法,封装类一个静态的Map,为每一个Class维护了一个JaxbContext,这