    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *     http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017
    018package org.apache.commons.jxpath.xml;
    019
    020import java.io.InputStream;
    021
    022import javax.xml.parsers.DocumentBuilderFactory;
    023
    024import org.apache.commons.jxpath.JXPathException;
    025
    026/**
    027 * An implementation of the XMLParser interface that produces a DOM Document.
    028 */
    029public class DOMParser extends XMLParser2 {
    030
    031    /**
    032     * Constructs a new instance.
    033     */
    034    public DOMParser() {
    035        // empty
    036    }
    037
    038    @Override
    039    public Object parseXML(final InputStream stream) {
    040        try {
    041            final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    042            factory.setValidating(isValidating());
    043            factory.setNamespaceAware(isNamespaceAware());
    044            factory.setIgnoringElementContentWhitespace(isIgnoringElementContentWhitespace());
    045            factory.setExpandEntityReferences(isExpandEntityReferences());
    046            factory.setIgnoringComments(isIgnoringComments());
    047            factory.setCoalescing(isCoalescing());
    048            return factory.newDocumentBuilder().parse(stream);
    049        } catch (final Exception ex) {
    050            throw new JXPathException("DOM parser error", ex);
    051        }
    052    }
    053}