繁体   English   中英

针对用于生成Bean的xsd验证xml

[英]Validating an xml against xsd that was used to generate Beans

我通过ant-build从几个xsd生成了一些bean。

在解组xml时,我想验证一个。 据我所知,现在有办法自己使用bean来做到这一点,一个人必须做这样的事情:

JAXBContext context = JAXBContext.newInstance(Bean.class);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("whatever.xsd"));

Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setSchema(schema);
unmarshaller.setEventHandler(validationHandler);

return (Bean) unmarshaller.unmarshal(givenXmlString);

我的问题是new File("whatever.xsd") 我不想将URL硬编码到xsd,它可能稍后会更改(即通过重构项目),并且会在运行时中断,因为有人忘记了(或不知道)更改了该URL。

理念:
为此,我唯一的想法是将xsd复制到与生成的bean相同的文件夹中,并使用一个bean的包名在运行时生成url。

还有更好的主意吗?

代替sf.newSchema(File) ,可以将sf.newSchema(Source[])javax.xml.transform.Source实现之一一起使用,例如javax.xml.transform.stream.StreamSource

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM