public void saveDescriptor(LocalExtension extension, FileOutputStream fos) throws ParserConfigurationException, TransformerException, IOException { DocumentBuilder documentBuilder = this.documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); Element extensionElement = document.createElement("extension"); document.appendChild(extensionElement); addElement(document, extensionElement, "id", extension.getId().getId()); addElement(document, extensionElement, "version", extension.getId().getVersion()); addElement(document, extensionElement, "type", extension.getType()); addElement(document, extensionElement, "dependency", String.valueOf(extension.isDependency())); addElement(document, extensionElement, "installed", String.valueOf(extension.isInstalled())); addElement(document, extensionElement, "description", extension.getDescription()); addElement(document, extensionElement, "author", extension.getAuthor()); addElement(document, extensionElement, "website", extension.getWebSite()); addDependencies(document, extensionElement, extension); addNamespaces(document, extensionElement, extension); TransformerFactory transfac = TransformerFactory.newInstance(); Transformer trans = transfac.newTransformer(); trans.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(document); Result result = new StreamResult(fos); trans.transform(source, result); }