Example usage for org.dom4j.io SAXReader setIncludeInternalDTDDeclarations

List of usage examples for org.dom4j.io SAXReader setIncludeInternalDTDDeclarations

Introduction

In this page you can find the example usage for org.dom4j.io SAXReader setIncludeInternalDTDDeclarations.

Prototype

public void setIncludeInternalDTDDeclarations(boolean include) 

Source Link

Document

Sets whether internal DTD declarations should be expanded into the DocumentType object or not.

Usage

From source file:com.cladonia.xml.XMLUtilities.java

License:Open Source License

/**
 * Creates a new SAXReader.// w  w  w . j av  a  2s.c o m
 *
 * @param validate when true the reader validates the input.
 *
 * @return the reader.
 */
public static SAXReader createReader(boolean validate, boolean loadExternalDTD) {
    SAXReader reader = new SAXReader(XDocumentFactory.getInstance(), validate);

    reader.setStripWhitespaceText(false);
    reader.setMergeAdjacentText(true);
    //      reader.setMergeAdjacentText( true);

    if (!validate) {
        reader.setIncludeExternalDTDDeclarations(false);
        reader.setIncludeInternalDTDDeclarations(true);

        try {
            if (loadExternalDTD) {
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", true);
                //               System.out.println( "http://apache.org/xml/features/nonvalidating/load-external-dtd = "+reader.getXMLReader().getFeature( "http://apache.org/xml/features/nonvalidating/load-external-dtd"));
                reader.setEntityResolver(getCatalogResolver());
            } else {
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        try {
            reader.getXMLReader().setFeature("http://apache.org/xml/features/validation/schema", true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    return reader;
}

From source file:com.cladonia.xml.XMLUtilities.java

License:Open Source License

/**
 * Creates a new SAXReader./*from w w w. j  a  v a  2s. co  m*/
 *
 * @param validate when true the reader validates the input.
 *
 * @return the reader.
 */
public static SAXReader createReader(boolean validate, boolean loadExternalDTD, boolean stripWhiteSpace) {
    SAXReader reader = new SAXReader(XDocumentFactory.getInstance(), validate);

    reader.setStripWhitespaceText(stripWhiteSpace);
    reader.setMergeAdjacentText(true);
    //      reader.setMergeAdjacentText( true);

    if (!validate) {
        reader.setIncludeExternalDTDDeclarations(false);
        reader.setIncludeInternalDTDDeclarations(true);

        try {
            if (loadExternalDTD) {
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", true);
                //               System.out.println( "http://apache.org/xml/features/nonvalidating/load-external-dtd = "+reader.getXMLReader().getFeature( "http://apache.org/xml/features/nonvalidating/load-external-dtd"));
                reader.setEntityResolver(getCatalogResolver());
            } else {
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
                reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        try {
            reader.getXMLReader().setFeature("http://apache.org/xml/features/validation/schema", true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    return reader;
}

From source file:de.innovationgate.webgate.api.auth.FileAuthenticationModule.java

License:Open Source License

/**
 * @param _file//w  w  w . ja va2s  .  c  om
 */
private synchronized void update(File _file) {

    try {
        // Parse doc
        SAXReader reader = new SAXReader();
        reader.setIncludeExternalDTDDeclarations(false);
        reader.setIncludeInternalDTDDeclarations(false);
        reader.setValidation(false);
        Document doc = reader.read(_file);

        // Flags
        _allowAnonymous = Boolean.valueOf(doc.getRootElement().attributeValue("allowanonymous")).booleanValue();

        // Read users
        Map users = new HashMap();
        Iterator userNodes = doc.selectNodes("/users/user").iterator();
        Element userNode;
        while (userNodes.hasNext()) {
            userNode = (Element) userNodes.next();
            String name = userNode.attributeValue("name");
            String password = userNode.attributeValue("password");
            String mail = userNode.attributeValue("mail");
            String aliasesStr = userNode.attributeValue("aliases");
            Set aliases = new HashSet();
            if (aliasesStr != null) {
                aliases.addAll(WGUtils.deserializeCollection(aliasesStr, ",", true));
            }
            users.put(name, new User(name, password, mail, aliases));
        }
        _users = users;

        // Read Groups
        Map groups = new HashMap();
        Iterator groupNodes = doc.selectNodes("/users/group").iterator();
        Element groupNode;
        while (groupNodes.hasNext()) {
            groupNode = (Element) groupNodes.next();
            String name = groupNode.attributeValue("name");
            List members = WGUtils.deserializeCollection(groupNode.attributeValue("members"), ",", true);
            Group group = new Group(name, members);
            groups.put(name, group);
            notifyMembers(group);
        }

        // Call listeners
        synchronized (_authenticationSourceListeners) {
            Iterator listeners = _authenticationSourceListeners.iterator();
            while (listeners.hasNext()) {
                ((AuthenticationSourceListener) listeners.next()).authenticationDataChanged();
            }
        }
    } catch (DocumentException e) {
        WGFactory.getLogger().error("Error parsing authentication file '" + getAuthenticationSource()
                + "': Error in XML: " + e.getMessage());
    }
}

From source file:de.innovationgate.wga.common.beans.hdbmodel.ModelDefinition.java

License:Open Source License

public static ModelDefinition read(InputStream in) throws Exception {

    // First read XML manually and validate against the DTD provided in this OpenWGA distribution (to prevent it being loaded from the internet, which might not work, see #00003612) 
    SAXReader reader = new SAXReader();
    reader.setIncludeExternalDTDDeclarations(true);
    reader.setIncludeInternalDTDDeclarations(true);
    reader.setEntityResolver(new EntityResolver() {

        @Override//from w  w  w  .  java2  s  .  c  om
        public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {

            if (systemId.equals("http://doc.openwga.com/hdb-model-definition-6.0.dtd")) {
                return new InputSource(ModelDefinition.class.getClassLoader().getResourceAsStream(
                        WGUtils.getPackagePath(ModelDefinition.class) + "/hdb-model-definition-6.0.dtd"));
            } else {
                // use the default behaviour
                return null;
            }

        }

    });

    org.dom4j.Document domDoc = reader.read(in);

    // Remove doctype (we already have validated) and provide the resulting XML to the serializer
    domDoc.setDocType(null);
    StringWriter out = new StringWriter();
    XMLWriter writer = new XMLWriter(out);
    writer.write(domDoc);
    String xml = out.toString();

    return _serializer.read(ModelDefinition.class, new StringReader(xml));
}

From source file:mondrian.util.XmlParserFactoryProducer.java

License:Open Source License

public static SAXReader getSAXReader(final EntityResolver resolver) {
    SAXReader reader = new SAXReader();
    if (resolver != null) {
        reader.setEntityResolver(resolver);
    }//  www . j  a v a2 s.co m
    try {
        reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
        reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
    } catch (SAXException e) {
        logger.error("Some parser properties are not supported.");
    }
    reader.setIncludeExternalDTDDeclarations(false);
    reader.setIncludeInternalDTDDeclarations(false);
    return reader;
}

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 {/*from  w  w w .j ava  2s.  c o 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;
    }
}

From source file:nl.tue.gale.common.GaleUtil.java

License:Open Source License

public static SAXReader createSAXReader(boolean validation, boolean loaddtd) {
    SAXReader result = new SAXReader();
    result.setValidation(validation);/*from w  w w  . ja  v a2 s  . co  m*/
    result.setIncludeExternalDTDDeclarations(loaddtd);
    result.setIncludeInternalDTDDeclarations(loaddtd);
    return result;
}

From source file:org.metaeffekt.dita.maven.glossary.GlossaryMapCreator.java

License:Apache License

protected Document readDocument(File file) {
    SAXReader reader = new SAXReader();
    reader.setValidation(false);//from w w w .j  a va2 s .  com
    reader.setIncludeInternalDTDDeclarations(false);
    reader.setIncludeExternalDTDDeclarations(false);
    reader.setIgnoreComments(true);
    reader.setEntityResolver(new EntityResolver() {
        @Override
        public InputSource resolveEntity(String arg0, String arg1) throws SAXException, IOException {
            return new InputSource(new InputStream() {
                @Override
                public int read() throws IOException {
                    return -1;
                }
            });
        }
    });
    try {
        return reader.read(file);
    } catch (DocumentException e) {
        return null;
    }
}

From source file:org.nuxeo.ecm.platform.webdav.request.tests.FakeResponse.java

License:Open Source License

public Element getXMLOutput() throws DocumentException, IOException {
    SAXReader saxReader = new SAXReader();
    saxReader.setMergeAdjacentText(true);
    saxReader.setEncoding("UTF-8");
    saxReader.setValidation(false);//w  w  w .ja v  a  2s.c  o  m
    saxReader.setIncludeExternalDTDDeclarations(false);
    saxReader.setIncludeInternalDTDDeclarations(false);
    String xml = getOutput();
    InputStream in = new StringBlob(xml).getStream();
    return saxReader.read(in).getRootElement();
}

From source file:pt.webdetails.cpf.utils.XmlParserFactoryProducer.java

License:Open Source License

/**
 * Creates an instance of {@link SAXReader} class
 * with features that prevent from some XXE attacks (e.g. XML bomb)
 * See PPP-3506 for more details.//from  ww  w .  j ava2 s. c o  m
 * See also https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet
 *
 * @param resolver Is {@link EntityResolver} or null
 * @return {@link SAXReader}
 */
public static SAXReader getSAXReader(final EntityResolver resolver) {
    SAXReader reader = new SAXReader();
    if (resolver != null) {
        reader.setEntityResolver(resolver);
    }
    try {
        reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
        reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
    } catch (SAXException e) {
        logger.error("Some parser properties are not supported.");
    }
    reader.setIncludeExternalDTDDeclarations(false);
    reader.setIncludeInternalDTDDeclarations(false);
    return reader;
}