J'essaye d'implémenter l'exemple de code à this article à partir de 2002 (je sais ..), mais je n'arrive pas à charger le schéma.Analyse des schémas XML en utilisant org.eclipse.xsd et Maven2
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.xsd.util.XSDResourceImpl;
ResourceSet resourceSet = new ResourceSetImpl();
// I replaced the deprecated createDeviceURI with createURI as recommended in JavaDoc
XSDResourceImpl xsdSchemaResource =
(XSDResourceImpl)resourceSet.getResource(URI.createURI("my.xsd"), true);
J'utilise les dépendances Maven2 suivantes:
<dependency>
<groupId>org.eclipse.xsd</groupId>
<artifactId>xsd</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.emf</groupId>
<artifactId>ecore</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.emf</groupId>
<artifactId>common</artifactId>
<version>2.1.0</version>
</dependency>
Le code compile très bien, mais produit un RuntimeException au moment de l'exécution:
java.lang.RuntimeException:
Cannot create a resource for 'my.xsd'; a registered resource factory is needed
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:346)
J'ai trouvé quelques implémentations usine de ressources dans org.eclipse.emf.ecore.xmi, mais AFAIK il y a seulement un xmi snapshot dans le repo public de Maven, qui a une dépendance sur org.eclipse.core.runtime .. qui est pas ce que je veux.
Quelqu'un peut-il aider?
Merci Keith, c'est exactement ce que je cherchais! Bien sûr, j'aurais dû trouver le XSDResourceFactoryImpl dans util moi-même, mais je ne suis pas du tout familier avec la base de code eclipse. –