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

时间:2014-11-19 13:00:45

标签: java xml validation xsd

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

当解组xml时,我想验证那个。据我所知,现在有办法用豆子自己做这个,必须做这样的事情:

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。 / p>


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

有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

您可以sf.newSchema(File)使用其中一个sf.newSchema(Source[])实施,而不是javax.xml.transform.Source,而不是static void Main() javax.xml.transform.stream.StreamSource