2014-11-19 2 views
0

Я генерирую некоторые компоненты из нескольких xsd через ant-build.Проверка xml против xsd, который использовался для генерации Beans

При демонтаже 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-адрес.

Идея:
Единственная идея, у меня есть для этого, чтобы скопировать XSD в ту же папку, создаваемые компонентов и использовать имяпакет одного боба для генерации URL во время выполнения.

Любые лучшие идеи?

+0

Не могли бы вы поместить все xsd для проверки во внешние 'свойства'. – Xstian

+0

@Xstian: Вы говорите, чтобы поместить URL-адрес в xsds в файле свойств? Я обновил сообщение, чтобы объяснить, почему это не поможет: _I не хочу жестко указывать URL-адрес xsd, который может измениться позже (т. Е. Путем реорганизации проекта) и будет прерываться во время выполнения, потому что один забыл (или не сделал знаете), чтобы изменить этот url._ – Sammy

+0

Вы можете использовать некоторое жестко закодированное значение по умолчанию и настроить его по внешнему файлу свойств. – Xstian

ответ

Смежные вопросы