Посмотрите на класс org.eclipse.xsd.ecore.XSDEcoreBuilder
и то, как он используется мастером импорта Eclipse.
Кажется довольно простым в использовании, вы просто вызываете один из его generate
методов и получаете обратно либо Collection<Resource>
, либо Collection<EObject>
.
(Изменить: отвечая на дополнительные вопросы в комментариях)
Класс EPackage
является эквивалентом Ecore xs:schema
, который содержит EClass
es, которые в свою очередь являются эквивалентами Ecore xs:complexType
s.
Следующий фрагмент кода должен создать и сохранить файл foo.ecore в той же папке, что и исходный XSD. Если в foo.xsd есть дополнительные импортированные XSD, они будут помещены в отдельные файлы .ecore, поэтому тип возвращаемого значения Collection<Resource>
.
URI schemaURI = URI.createFileURI("foo.xsd");
Collection<Resource> ecoreResources = XSDEcoreBuilder.generateResources(schemaURI);
for (Resource ecoreResource : ecoreResources) {
ecoreResource.save(null);
}