Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 如何在eclipse插件中以编程方式编辑xml模式文件_Java_Xml_Xsd_Eclipse Plugin_Xmlschema - Fatal编程技术网

Java 如何在eclipse插件中以编程方式编辑xml模式文件

Java 如何在eclipse插件中以编程方式编辑xml模式文件,java,xml,xsd,eclipse-plugin,xmlschema,Java,Xml,Xsd,Eclipse Plugin,Xmlschema,我需要在eclipse插件项目(eclipse版本为4.2.2)中编辑xml模式文件(.xsd)。 现在,我可以使用org.apache.xerces.xs.xs.XSModel以如下方式读取eclipse项目中的xsd IFile: private XSModel readXSDModelFromResource(IFile xsdFile) throws CoreException, ClassNotFoundException, InstantiationException, Illega

我需要在eclipse插件项目(eclipse版本为4.2.2)中编辑xml模式文件(.xsd)。 现在,我可以使用org.apache.xerces.xs.xs.XSModel以如下方式读取eclipse项目中的xsd IFile:

private XSModel readXSDModelFromResource(IFile xsdFile) throws CoreException, ClassNotFoundException, InstantiationException, IllegalAccessException, ClassCastException {

    DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
    XSImplementation xsImplementation = (XSImplementation) registry.getDOMImplementation("XS-Loader");
    XSLoader schemaLoader = xsImplementation.createXSLoader(null);

    LSInput input = new DOMInputImpl();
    input.setBaseURI(xsdFile.getLocation().removeLastSegments(1).addTrailingSeparator().toOSString());
    input.setSystemId(xsdFile.getFullPath().lastSegment());
    input.setByteStream(xsdFile.getContents());

    XSModel model = schemaLoader.load(input);

    return model;
}
这很好!我的XSModel具有XML模式的正确表示,也遵循所有xsd:include标记

但是,我读到了

XSModel:表示XML模式的只读接口,可以是来自不同名称空间的组件

XMLSchema是一种轻量级Java对象模型,可用于操作和生成XML模式表示。您可以使用它将XML模式(xsd)文件读入内存并分析或修改它们,或者从头开始创建全新的模式

因此,由于我的需要是添加或删除元素、更改目标名称空间等等,我的疑问是:

  • 如何操作XSM模型?相关的读写对象/库是什么(如果存在)
  • 如果我必须使用ApacheXMLSchema库,那么既然plugin.xml的dependecies列表与org.Apache.ws.*包没有任何关系,如何将它导入eclipse插件项目
如果可能的话(我希望如此),我希望避免使用dom、SAX、DOM4J进行原始xml dom操作


多亏了all

,我还阅读了EMF(Eclipse建模框架)来处理XSD编辑。有人能提供一些如何实现这一点的示例吗?ThanksI可以确认EMF XSD模型是整个XSD规范的一个非常成熟和健壮的实现。它非常适合加载整个XSD模型、以编程方式修改模型并编写新版本。一开始有点吓人,但API设计良好且一致,所以您很快就掌握了窍门。很抱歉,我无法提供样品-我已经很久没有使用它了。您是否重新引用此:,不是吗?我要试试这个API。希望这对我有用!是的,我指的就是这个项目。