Example usage for org.dom4j.io SAXWriter parse

List of usage examples for org.dom4j.io SAXWriter parse

Introduction

In this page you can find the example usage for org.dom4j.io SAXWriter parse.

Prototype

public void parse(InputSource input) throws SAXException 

Source Link

Document

Parses an XML document.

Usage

From source file:net.unicon.toro.installer.tools.MergeConfiguration.java

License:Open Source License

private void mergeWebChanges(Element el, File path) throws Exception {
    System.out.println("Merging web.xml changes to " + path.getAbsolutePath());
    Utils.instance().backupFile(path, true);

    OutputFormat format = OutputFormat.createPrettyPrint();

    SAXReader reader = new SAXReader();
    reader.setIncludeInternalDTDDeclarations(true);
    Document document = reader.read(new URL("file:" + path.getAbsolutePath()));
    SAXSource source = new DocumentSource(document);

    List<Element> filters = (List<Element>) el.selectNodes("add-filter/filter");
    List<Element> filterMappings = (List<Element>) el.selectNodes("add-filter-mapping/filter-mapping");
    List<Element> servlets = (List<Element>) el.selectNodes("add-servlet/servlet");
    List<Element> servletMappings = (List<Element>) el.selectNodes("add-servlet-mapping/servlet-mapping");
    List<Element> errorPages = (List<Element>) el.selectNodes("add-error-page/error-page");

    // remove previous changes
    StringWriter cleansedDocumentWriter = new StringWriter();
    WebXmlCleanserFilter cleaner = new WebXmlCleanserFilter(new XMLWriter(cleansedDocumentWriter));
    cleaner.parse(source.getInputSource());

    // add new changes
    try {// w ww . j  a v  a2  s.co  m
        Document cleansedDocument = reader.read(new StringReader(cleansedDocumentWriter.toString()));
        source = new DocumentSource(cleansedDocument);
        SAXWriter saxWriter = new WebXmlAdditionsWriter(new XMLWriter(new FileOutputStream(path), format),
                filters, filterMappings, servlets, servletMappings, errorPages);
        saxWriter.parse(source.getInputSource());
    } catch (Exception e) {
        e.printStackTrace();
        throw e;
    }
}