2

我需要在 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 操作。

谢谢大家

4

0 回答 0