Java 使用org.eclipse.xsd和Maven2分析XML模式

Java 使用org.eclipse.xsd和Maven2分析XML模式,java,xsd,eclipse-emf,Java,Xsd,Eclipse Emf,我试图将示例代码实现为从2002年开始(我知道…),但无法加载模式 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.eclips

我试图将示例代码实现为从2002年开始(我知道…),但无法加载模式

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>
我在org.eclipse.emf.ecore.xmi中找到了一些资源工厂实现,但是在公共Maven repo中只有一个xmi,它依赖于org.eclipse.core.runtime。。这不是我想要的


有人能帮忙吗?

在创建ResourceSetImpl之前,请尝试添加此代码:

import org.eclipse.xsd.util.XSDResourceFactoryImpl;

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
java.util.Map m = reg.getExtensionToFactoryMap();
m.put("xsd", new XSDResourceFactoryImpl());

这应该会创建一个注册表和工厂,您需要它来完成您要做的事情。

谢谢Keith,这正是我想要的!当然,我应该在util中找到XSDResourceFactoryImpl,但我对eclipse代码库完全不熟悉。
import org.eclipse.xsd.util.XSDResourceFactoryImpl;

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
java.util.Map m = reg.getExtensionToFactoryMap();
m.put("xsd", new XSDResourceFactoryImpl());