[英]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.