首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB验证--Jaxb1.0与jaxb2.0之间的区别

JAXB验证--Jaxb1.0与jaxb2.0之间的区别
EN

Stack Overflow用户
提问于 2022-12-01 12:52:26
回答 1查看 28关注 0票数 0

在Jaxb1.0中,通过对解组对象调用'setValidating‘打开xml验证:

代码语言:javascript
复制
JAXBContext jaxbContext = JAXBContext.newInstance(packageName);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setValidating(true);

在Jaxb2.0中,验证是增强的,需要设置模式:

代码语言:javascript
复制
 Schema schema = schemaFactory.newSchema(file);
 unmarshaller.setSchema(schema);

看起来,要使用JAXB2.0验证,模式xsd文件是必需的、必需的资源,必须在应用程序上下文中提供。

在JAXB1.0中,打开验证不需要模式文件(至少是显式的)

问题1:

JAXB1.0真的在其实现(来自xjc)中存储验证功能吗?在app/package/classpath运行时上下文中不需要xsd文件吗?

问题2:

在JAXB2.0中,是否有可能对解组器使用“unsetSchema”--只是放弃验证(为了性能目的.当我看到传入的xml有效载荷与我之前已经验证过的相同)?

EN

回答 1

Stack Overflow用户

发布于 2022-12-01 16:52:28

对问题2的答复:

要关闭解封送处理程序验证,只需将模式重置为null就足够了:

代码语言:javascript
复制
unmarshaller.setSchema(null);

问题1仍未解决:

JAXB2.0是否需要在运行时提供一个模式文件来执行编组/解编组过程中的验证?或者,我们可以使用一些选项(如-nv)强制xjc编译器生成具有JAXB1.0那样的验证功能的实现。(只是为了不透露xsd模式)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74642162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档