我需要在 Eclipse 插件项目(Eclipse 版本为 4.2.2)中编辑 xml-schema 文件 (.xsd)。现在,我可以使用 org.apache.xerces.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 Schema 的只读接口,它可以是来自不同命名空间的组件。
在这里_
XMLSchema 是一种轻量级 Java 对象模型,可用于操作和生成 XML 模式表示。您可以使用它将 XML Schema (xsd) 文件读入内存并分析或修改它们,或者从头开始创建全新的模式。
因此,由于我的需求是添加或删除元素、更改目标名称空间等,我的疑问是:
- 如何操作 XSModel?什么是(如果存在)相关的读写对象/库?
- 如果我必须使用 Apache XMLSchema 库,我如何将它导入到 eclipse 插件项目中,因为 plugin.xml 的依赖项列表与 org.apache.ws.* 包无关?
如果可能的话(我希望如此:)),我想避免使用 DOM、SAX、DOM4J 进行原始 xml dom 操作。
谢谢大家