2
我试图从2002年(我知道.. ..)this article实现示例代码,但无法获取模式加载。使用org.eclipse.xsd和Maven2分析XML模式
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);
我用下面的Maven2依赖关系:
<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>
代码编译得很好,但在执行时会产生一个RuntimeException:
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)
我发现了一些资源工厂实现在org.eclipse.emf.ecore.xmi中,但AFAIK在公共Maven回购中只有一个xmi snapshot,它具有对org.eclipse.core.runtime的依赖关系。这是不是我想要什么。
任何人都可以帮忙吗?
感谢Keith,那就是我一直在寻找的!当然,我本应该在util中找到XSDResourceFactoryImpl,但我完全不熟悉eclipse代码库。 – 2009-02-11 09:48:44