我通过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。
有更好的想法吗?
答案 0 :(得分:0)
您可以sf.newSchema(File)
使用其中一个sf.newSchema(Source[])
实施,而不是javax.xml.transform.Source
,而不是static void Main()
。 javax.xml.transform.stream.StreamSource