Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用EMF解析字符串格式的XML_Java_Xml_Eclipse Emf - Fatal编程技术网

Java 使用EMF解析字符串格式的XML

Java 使用EMF解析字符串格式的XML,java,xml,eclipse-emf,Java,Xml,Eclipse Emf,我使用EMF生成了基于XSD的访问函数。我可以在生成的示例中看到如何从磁盘文件加载输入。但是,我要解析的XML存储在字符串中。有什么方法可以不将字符串转储到文件中然后再将其读回而继续吗?下面是一个示例方法,它接收modelString和解析xml并返回EOObject的ECorePackage实例 public static EObject loadEObjectFromString(String myModelXml, EPackage ePackage) throws IOException

我使用EMF生成了基于XSD的访问函数。我可以在生成的示例中看到如何从磁盘文件加载输入。但是,我要解析的XML存储在字符串中。有什么方法可以不将字符串转储到文件中然后再将其读回而继续吗?

下面是一个示例方法,它接收modelString和解析xml并返回EOObject的ECorePackage实例

public static EObject loadEObjectFromString(String myModelXml, EPackage ePackage) throws IOException { 
    // Create a ResourceSet
    ResourceSet resourceSet = new ResourceSetImpl();
    // register XMIRegistryResourceFactoryIml
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
    (Resource.Factory.Registry.DEFAULT_EXTENSION, 
     new XMIResourceFactoryImpl());
     // register your epackage to the resource set so it has a reference to your ecore
     // you can get an instance to your epackage by calling YourEPackageClass.getInstace();
    resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage);
    Resource resource = resourceSet.createResource(URI.createURI("*.modelextension"));
    resource.load(new URIConverter.ReadableInputStream(myModelXml), null);
    // return the root model object and there you have it, all you need is to
    // cast it to the right EObject based on your model 
    return resource.getContents().get(0);
}