|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.cdmckay.coffeedom.input.SAXBuilder
public class SAXBuilder
Builds a CoffeeDOM document from files, streams, readers, URLs, or a SAX InputSource
instance using a
SAX parser. The builder uses a third-party SAX parser (chosen by JAXP by default, or you can choose manually) to
handle the parsing duties and simply listens to the SAX events to construct a document. Details which SAX does not
provide, such as whitespace outside the root element, are not represented in the CoffeeDOM document. Information about SAX
can be found at http://www.saxproject.org.
DocType
or EntityRef
may be converted by the SAX parser into
absolute paths.
Constructor Summary | |
---|---|
SAXBuilder()
Creates a new SAXBuilder which will attempt to first locate a parser via JAXP, then will try to use a set of default SAX Drivers. |
|
SAXBuilder(boolean validate)
Creates a new SAXBuilder which will attempt to first locate a parser via JAXP, then will try to use a set of default SAX Drivers. |
|
SAXBuilder(String saxDriverClassName)
Creates a new SAXBuilder using the specified SAX parser. |
|
SAXBuilder(String saxDriverClassName,
boolean validate)
Creates a new SAXBuilder using the specified SAX parser. |
Method Summary | |
---|---|
Document |
build(File file)
This builds a document from the supplied filename. |
Document |
build(InputSource in)
This builds a document from the supplied input source. |
Document |
build(InputStream in)
This builds a document from the supplied input stream. |
Document |
build(InputStream in,
String systemId)
This builds a document from the supplied input stream. |
Document |
build(Reader characterStream)
This builds a document from the supplied Reader. |
Document |
build(Reader characterStream,
String systemId)
This builds a document from the supplied Reader. |
Document |
build(String systemId)
This builds a document from the supplied URI. |
Document |
build(URL url)
This builds a document from the supplied URL. |
protected void |
configureContentHandler(SAXHandler contentHandler)
This configures the SAXHandler that will be used to build the Document. |
protected void |
configureParser(XMLReader parser,
SAXHandler contentHandler)
This configures the XMLReader to be used for reading the XML document. |
protected SAXHandler |
createContentHandler()
This creates the SAXHandler that will be used to build the Document. |
protected XMLReader |
createParser()
This creates the XMLReader to be used for reading the XML document. |
String |
getDriverClassName()
Returns the driver class assigned in the constructor, or null if none. |
DTDHandler |
getDTDHandler()
Returns the DTDHandler assigned, or null if none. |
EntityResolver |
getEntityResolver()
Returns the EntityResolver assigned, or null if none. |
ErrorHandler |
getErrorHandler()
Returns the ErrorHandler assigned, or null if none. |
boolean |
getExpandEntities()
Returns whether or not entities are being expanded into normal text content. |
CoffeeDOMFactory |
getFactory()
Returns the current CoffeeDOMFactory in use. |
boolean |
getIgnoringBoundaryWhitespace()
Returns whether or not the parser will elminate element content containing only whitespace. |
boolean |
getIgnoringElementContentWhitespace()
Returns whether element content whitespace is to be ignored during the build. |
boolean |
getReuseParser()
Returns whether the contained SAX parser instance is reused across multiple parses. |
boolean |
getValidation()
Returns whether validation is to be performed during the build. |
XMLFilter |
getXMLFilter()
Returns the XMLFilter used during parsing, or null if none. |
void |
setDTDHandler(DTDHandler dtdHandler)
This sets custom DTDHandler for the Builder . |
void |
setEntityResolver(EntityResolver entityResolver)
This sets custom EntityResolver for the Builder . |
void |
setErrorHandler(ErrorHandler errorHandler)
This sets custom ErrorHandler for the Builder . |
void |
setExpandEntities(boolean expand)
This sets whether or not to expand entities for the builder. |
void |
setFactory(CoffeeDOMFactory factory)
This sets a custom CoffeeDOMFactory for the builder. |
void |
setFastReconfigure(boolean fastReconfigure)
Specifies whether this builder will do fast reconfiguration of the underlying SAX parser when reuseParser is true. |
void |
setFeature(String name,
boolean value)
This sets a feature on the SAX parser. |
void |
setIgnoringBoundaryWhitespace(boolean ignoringBoundaryWhite)
Specifies whether or not the parser should elminate boundary whitespace, a term that indicates whitespace-only text between element tags. |
void |
setIgnoringElementContentWhitespace(boolean ignoringWhite)
Specifies whether or not the parser should elminate whitespace in element content (sometimes known as "ignorable whitespace") when building the document. |
void |
setProperty(String name,
Object value)
This sets a property on the SAX parser. |
void |
setReuseParser(boolean reuseParser)
Specifies whether this builder shall reuse the same SAX parser when performing subsequent parses or allocate a new parser for each parse. |
void |
setValidation(boolean validate)
This sets validation for the builder. |
void |
setXMLFilter(XMLFilter xmlFilter)
This sets a custom XMLFilter for the builder. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SAXBuilder()
public SAXBuilder(boolean validate)
validate
- boolean
indicating if validation should occur.public SAXBuilder(String saxDriverClassName)
saxDriverClassName
- String
name of SAX Driver to use for parsing.public SAXBuilder(String saxDriverClassName, boolean validate)
saxDriverClassName
- String
name of SAX Driver to use for parsing.validate
- boolean
indicating if validation should occur.Method Detail |
---|
public String getDriverClassName()
public CoffeeDOMFactory getFactory()
CoffeeDOMFactory
in use.
public void setFactory(CoffeeDOMFactory factory)
factory
- CoffeeDOMFactory
to usepublic boolean getValidation()
public void setValidation(boolean validate)
validate
- boolean
indicating whether validation should occur.public ErrorHandler getErrorHandler()
ErrorHandler
assigned, or null if none.
public void setErrorHandler(ErrorHandler errorHandler)
Builder
.
errorHandler
- ErrorHandler
public EntityResolver getEntityResolver()
EntityResolver
assigned, or null if none.
public void setEntityResolver(EntityResolver entityResolver)
Builder
.
entityResolver
- EntityResolver
public DTDHandler getDTDHandler()
DTDHandler
assigned, or null if none.
public void setDTDHandler(DTDHandler dtdHandler)
Builder
.
dtdHandler
- DTDHandler
public XMLFilter getXMLFilter()
XMLFilter
used during parsing, or null if none.
public void setXMLFilter(XMLFilter xmlFilter)
XMLFilter
for the builder.
xmlFilter
- the filter to usepublic boolean getIgnoringElementContentWhitespace()
public void setIgnoringElementContentWhitespace(boolean ignoringWhite)
false
.
ignoringWhite
- Whether to ignore ignorable whitespacepublic boolean getIgnoringBoundaryWhitespace()
boolean
- whether only whitespace content will be ignored during build.setIgnoringBoundaryWhitespace(boolean)
public void setIgnoringBoundaryWhitespace(boolean ignoringBoundaryWhite)
setIgnoringElementContentWhitespace(boolean)
but
this feature is more aggressive and doesn't require validation be turned on. The setIgnoringElementContentWhitespace(boolean)
call impacts the SAX parse process while this method impacts the
CoffeeDOM build process, so it can be beneficial to turn both on for efficiency. For implementation efficiency, this
method actually removes all whitespace-only text() nodes. That can, in some cases (like between an element tag
and a comment), include whitespace that isn't just boundary whitespace. The default is false
.
ignoringBoundaryWhite
- Whether to ignore whitespace-only text noespublic boolean getReuseParser()
public void setReuseParser(boolean reuseParser)
true
(parser reuse). Note: As SAX parser instances are not thread safe, the parser reuse feature should not be used with SAXBuilder instances shared among threads.
reuseParser
- Whether to reuse the SAX parser.public void setFastReconfigure(boolean fastReconfigure)
false
(no fast reconfiguration). If reuseParser is false, calling
this has no effect.
fastReconfigure
- Whether to do a fast reconfiguration of the parserpublic void setFeature(String name, boolean value)
NOTE: SAXBuilder requires that some particular features of the SAX parser be set up in certain ways for it to work properly. The list of such features may change in the future. Therefore, the use of this method may cause parsing to break, and even if it doesn't break anything today it might break parsing in a future CoffeeDOM version, because what CoffeeDOM parsers require may change over time. Use with caution.
name
- The feature name, which is a fully-qualified URI.value
- The requested state of the feature (true or false).public void setProperty(String name, Object value)
NOTE: SAXBuilder requires that some particular properties of the SAX parser be set up in certain ways for it to work properly. The list of such properties may change in the future. Therefore, the use of this method may cause parsing to break, and even if it doesn't break anything today it might break parsing in a future CoffeeDOM version, because what CoffeeDOM parsers require may change over time. Use with caution.
name
- The property name, which is a fully-qualified URI.value
- The requested value for the property.public Document build(InputSource in) throws CoffeeDOMException, IOException
in
- InputSource
to read from
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsedprotected SAXHandler createContentHandler()
SAXHandler
- resultant SAXHandler object.protected void configureContentHandler(SAXHandler contentHandler)
The default implementation simply passes through some configuration settings that were set on the SAXBuilder: setExpandEntities() and setIgnoringElementContentWhitespace().
contentHandler
- The SAXHandler to configureprotected XMLReader createParser() throws CoffeeDOMException
The default behavior is to (1) use the saxDriverClassName, if it has been set, (2) try to obtain a parser from JAXP, if it is available, and (3) if all else fails, use a hard-coded default parser (currently the Xerces parser). Subclasses may override this method to determine the parser to use in a different way.
CoffeeDOMException
- if there is trouble loading the SAX driver.protected void configureParser(XMLReader parser, SAXHandler contentHandler) throws CoffeeDOMException
The default implementation sets
various options on the given XMLReader, such as validation, DTD resolution, entity handlers, etc., according to
the options that were set (e.g. via setEntityResolver
) and set various SAX properties and features
that are required for CoffeeDOM internals. These features may change in future releases, so change this behavior at
your own risk.
parser
- The parser.contentHandler
- The SAX content handler.
CoffeeDOMException
- when errors occur in parsing.public Document build(InputStream in) throws CoffeeDOMException, IOException
This builds a document from the supplied input stream.
in
- InputStream
to read from
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsed.public Document build(File file) throws CoffeeDOMException, IOException
This builds a document from the supplied filename.
file
- File
to read from
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsedpublic Document build(URL url) throws CoffeeDOMException, IOException
This builds a document from the supplied URL.
url
- URL
to read from.
Document
- resultant Document object.
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsed.public Document build(InputStream in, String systemId) throws CoffeeDOMException, IOException
This builds a document from the supplied input stream.
in
- InputStream
to read from.systemId
- base for resolving relative URIs
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
public Document build(Reader characterStream) throws CoffeeDOMException, IOException
This builds a document from the supplied Reader. It's the programmer's responsibility to make sure the reader matches the encoding of the file. It's often easier and safer to use an InputStream rather than a Reader, and to let the parser auto-detect the encoding from the XML declaration.
characterStream
- Reader
to read from
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsed.public Document build(Reader characterStream, String systemId) throws CoffeeDOMException, IOException
This builds a document from the supplied Reader. It's the programmer's responsibility to make sure the reader matches the encoding of the file. It's often easier and safer to use an InputStream rather than a Reader, and to let the parser auto-detect the encoding from the XML declaration.
characterStream
- Reader
to read from.systemId
- base for resolving relative URIs
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsed.public Document build(String systemId) throws CoffeeDOMException, IOException
This builds a document from the supplied URI.
systemId
- URI for the input
Document
resultant Document object
CoffeeDOMException
- when errors occur in parsing
IOException
- when an I/O error prevents a document
from being fully parsed.public boolean getExpandEntities()
public void setExpandEntities(boolean expand)
This sets whether or not to expand entities for the builder. A true means to expand entities as normal
content. A false means to leave entities unexpanded as EntityRef
objects. The default is true.
When this setting is false, the internal DTD subset is retained; when this setting is true, the internal DTD subset is not retained.
Note that Xerces (at least up to 1.4.4) has a bug where entities in attribute values will be misreported if this flag is turned off, resulting in entities to appear within element content. When turning entity expansion off either avoid entities in attribute values, or use another parser like Crimson. http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6111
expand
- boolean
indicating whether entity expansion should occur.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |