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 */ 017package org.apache.commons.jxpath.xml; 018 019import java.io.InputStream; 020 021/** 022 * The abstract superclass of XML parsers that produce DOM Documents. 023 * The features have the same defaults as {@link javax.xml.parsers.DocumentBuilderFactory}. 024 * 025 * @author Dmitri Plotnikov 026 * @version $Revision: 652845 $ $Date: 2008-05-02 19:46:46 +0200 (Fr, 02 Mai 2008) $ 027 */ 028public abstract class XMLParser2 implements XMLParser { 029 private boolean validating = false; 030 private boolean namespaceAware = true; 031 private boolean whitespace = false; 032 private boolean expandEntityRef = true; 033 private boolean ignoreComments = false; 034 private boolean coalescing = false; 035 036 /** 037 * Set whether the underlying parser should be validating. 038 * @param validating flag 039 * @see javax.xml.parsers.DocumentBuilderFactory#setValidating(boolean) 040 */ 041 public void setValidating(boolean validating) { 042 this.validating = validating; 043 } 044 045 /** 046 * Learn whether the underlying parser is validating. 047 * @return boolean 048 * @see javax.xml.parsers.DocumentBuilderFactory#isValidating() 049 */ 050 public boolean isValidating() { 051 return validating; 052 } 053 054 /** 055 * Learn whether the underlying parser is ns-aware. 056 * @return boolean 057 * @see javax.xml.parsers.DocumentBuilderFactory#isNamespaceAware() 058 */ 059 public boolean isNamespaceAware() { 060 return namespaceAware; 061 } 062 063 /** 064 * Set whether the underlying parser is ns-aware. 065 * @param namespaceAware flag 066 * @see javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean) 067 */ 068 public void setNamespaceAware(boolean namespaceAware) { 069 this.namespaceAware = namespaceAware; 070 } 071 072 /** 073 * Set whether the underlying parser is ignoring whitespace. 074 * @param whitespace flag 075 * @see javax.xml.parsers.DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean) 076 */ 077 public void setIgnoringElementContentWhitespace(boolean whitespace) { 078 this.whitespace = whitespace; 079 } 080 081 /** 082 * Learn whether the underlying parser is ignoring whitespace. 083 * @return boolean 084 * @see javax.xml.parsers.DocumentBuilderFactory#isIgnoringElementContentWhitespace() 085 */ 086 public boolean isIgnoringElementContentWhitespace() { 087 return whitespace; 088 } 089 090 /** 091 * Learn whether the underlying parser expands entity references. 092 * @return boolean 093 * @see javax.xml.parsers.DocumentBuilderFactory#isExpandEntityReferences() 094 */ 095 public boolean isExpandEntityReferences() { 096 return expandEntityRef; 097 } 098 099 /** 100 * Set whether the underlying parser expands entity references. 101 * @param expandEntityRef flag 102 * @see javax.xml.parsers.DocumentBuilderFactory#setExpandEntityReferences(boolean) 103 */ 104 public void setExpandEntityReferences(boolean expandEntityRef) { 105 this.expandEntityRef = expandEntityRef; 106 } 107 108 /** 109 * Learn whether the underlying parser ignores comments. 110 * @return boolean 111 * @see javax.xml.parsers.DocumentBuilderFactory#isIgnoringComments() 112 */ 113 public boolean isIgnoringComments() { 114 return ignoreComments; 115 } 116 117 /** 118 * Set whether the underlying parser ignores comments. 119 * @param ignoreComments flag 120 * @see javax.xml.parsers.DocumentBuilderFactory#setIgnoringComments(boolean) 121 */ 122 public void setIgnoringComments(boolean ignoreComments) { 123 this.ignoreComments = ignoreComments; 124 } 125 126 /** 127 * Learn whether the underlying parser is coalescing. 128 * @return boolean 129 * @see javax.xml.parsers.DocumentBuilderFactory#isCoalescing() 130 */ 131 public boolean isCoalescing() { 132 return coalescing; 133 } 134 135 /** 136 * Set whether the underlying parser is coalescing. 137 * @param coalescing flag 138 * @see javax.xml.parsers.DocumentBuilderFactory#setCoalescing(boolean) 139 */ 140 public void setCoalescing(boolean coalescing) { 141 this.coalescing = coalescing; 142 } 143 144 public abstract Object parseXML(InputStream stream); 145}