栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在不进行编组的情况下针对JAXB 2.0中的架构进行验证?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在不进行编组的情况下针对JAXB 2.0中的架构进行验证?

首先,

javax.xml.bind.Validator
不赞成使用
javax.xml.validation.Schema
(javadoc)。这个想法是您通过
javax.xml.validation.SchemaFactory
(javadoc)解析模式,并将其注入到marshaller
/ unmarshaller中。

关于您的有关不进行编组验证的问题,这里的问题是JAXB实际上将验证委托给Xerces(或您使用的任何SAX处理器),并且Xerces将您的文档验证为SAX事件流。因此,为了进行验证,您需要执行
某种 编组。

影响最小的实现是使用SAX处理器的“ / dev / null”实现。编组为null OutputStream仍将涉及XML生成,这很浪费。所以我建议:

SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);Schema schema = schemaFactory.newSchema(locationOfMySchema);Marshaller marshaller = jaxbContext.createMarshaller();marshaller.setSchema(schema);marshaller.marshal(objectToMarshal, new DefaultHandler());

DefaultHandler
将丢弃所有事件,并且
marshal()
如果针对架构的验证失败,则该操作将引发JAXBException。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号