Java 如何在eclipse插件中以编程方式编辑xml模式文件
我需要在eclipse插件项目(eclipse版本为4.2.2)中编辑xml模式文件(.xsd)。 现在,我可以使用org.apache.xerces.xs.xs.XSModel以如下方式读取eclipse项目中的xsd IFile: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
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插件项目
多亏了all,我还阅读了EMF(Eclipse建模框架)来处理XSD编辑。有人能提供一些如何实现这一点的示例吗?ThanksI可以确认EMF XSD模型是整个XSD规范的一个非常成熟和健壮的实现。它非常适合加载整个XSD模型、以编程方式修改模型并编写新版本。一开始有点吓人,但API设计良好且一致,所以您很快就掌握了窍门。很抱歉,我无法提供样品-我已经很久没有使用它了。您是否重新引用此:,不是吗?我要试试这个API。希望这对我有用!是的,我指的就是这个项目。