Я новичок в использовании JAXB, и я использовал xjc JAXB 2.1.3 для создания набора классов из моей XML-схемы. Помимо создания класса для каждого элемента в моей схеме, он создал класс ObjectFactory.В чем смысл классов ObjectFactory JAXB 2?
Кажется, что ничего не мешает мне создавать элементы непосредственно, например.
MyElement element = new MyElement();
в то время как учебники, кажется, предпочитают
MyElement element = new ObjectFactory().createMyElement();
Если я смотрю в ObjectFactory.java, я вижу:
public MyElement createMyElement() {
return new MyElement();
}
так в чем дело? Почему я должен даже поддерживать класс ObjectFactory? Я предполагаю, что он также будет перезаписан, если я буду перекомпилировать из измененной схемы.
Можете ли вы привести пример/ссылку на то, что (или насколько сложно) элемент схемы должен быть для того, чтобы создать *(), чтобы сделать что-то полезное? У меня возникли проблемы с поиском части схемы, на которую вы ссылаетесь на примере JAXB. Если моя схема будет более сложной позже, было бы неплохо создать * для обработки ее части для меня, но поскольку она создаёт *, даже не нужно создавать подэлементы самостоятельно. –
Если вы загружаете XHTML 1.1 и XHTML Modularization 1.1 tarballs, вы найдете каталоги внутри под названием «SCHEMA». Поместите все файлы .xsd в одни и те же каталоги. Некоторые из файлов .xsd также будут импортированы http://www.w3.org/2001/xml.xsd; вам нужно будет соответствующим образом скорректировать расположение, если вы не хотите, чтобы файл загружался каждый раз при запуске xjc. [cont] –
[cont] Конкретная часть .xsd, которая указывает содержимое
, в этом случае находится в xhtml11-model-1.xsd, в группе xhtml.head.content. –