Как программно редактировать файл схемы xml в плагине eclipse
Мне нужно отредактировать файл xml-схемы (.xsd) в проекте плагина eclipse (версия eclipse - 4.2.2). Прямо сейчас я могу прочитать xsd IFile в моем проекте eclipse, используя org.apache.xerces.xs.XSModel следующим образом:
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, которая может быть компонентами из разных пространств имен.
И вот что
XML Schema - это облегченная объектная модель Java, которую можно использовать для управления и создания представлений схемы XML. Вы можете использовать его для чтения файлов XML Schema (xsd) в память и анализа или изменения их, или для создания совершенно новых схем с нуля.
Следовательно, поскольку мне нужно добавлять или удалять элементы, изменять целевые пространства имен и т. Д., Я сомневаюсь:
- как я могу манипулировать XSModel? Что представляет собой (если существует) связанный объект / библиотека для чтения и записи?
- если мне нужно использовать библиотеку Apache XMLSchema, как я могу импортировать ее в проект плагина eclipse, поскольку список зависимостей для plugin.xml не имеет ничего общего с пакетом org.apache.ws.*?
Я бы хотел избежать, если возможно (я надеюсь на это:)), необработанных манипуляций с xml dom с помощью DOM, SAX, DOM4J....
Спасибо всем