org.dom4j.io

Class SAXWriter

Implemented Interfaces:
XMLReader

public class SAXWriter
extends java.lang.Object
implements XMLReader

SAXWriter writes a DOM4J tree to a SAX ContentHandler.
Version:
$Revision: 1.24 $
Author:
James Strachan

Field Summary

protected static String
FEATURE_NAMESPACES
protected static String
FEATURE_NAMESPACE_PREFIXES
protected static String[]
LEXICAL_HANDLER_NAMES

Constructor Summary

SAXWriter()
SAXWriter(ContentHandler contentHandler)
SAXWriter(ContentHandler contentHandler, LexicalHandler lexicalHandler)
SAXWriter(ContentHandler contentHandler, LexicalHandler lexicalHandler, EntityResolver entityResolver)

Method Summary

protected AttributesImpl
addNamespaceAttribute(AttributesImpl attrs, Namespace namespace)
If isDelcareNamespaceAttributes() is enabled then this method will add the given namespace declaration to the supplied attributes object, creating one if it does not exist.
protected void
checkForNullHandlers()
Ensures non-null content handlers?
protected Attributes
createAttributes(Element element, Attributes namespaceAttributes)
protected void
documentLocator(Document document)
The org.xml.sax.Locatoris only really useful when parsing a textual document as its main purpose is to identify the line and column number.
protected void
dtdHandler(Document document)
We do not yet support DTD or XML Schemas so this method does nothing right now.
protected void
endDocument()
protected void
endElement(Element element)
protected void
endPrefixMapping(org.dom4j.tree.NamespaceStack stack, int stackSize)
Fires a SAX endPrefixMapping event for all the namespaceStack which have gone out of scope
protected void
entityResolver(Document document)
ContentHandler
getContentHandler()
DOCUMENT ME!
DTDHandler
getDTDHandler()
DOCUMENT ME!
EntityResolver
getEntityResolver()
DOCUMENT ME!
ErrorHandler
getErrorHandler()
DOCUMENT ME!
boolean
getFeature(String name)
Looks up the value of a feature.
LexicalHandler
getLexicalHandler()
DOCUMENT ME!
Object
getProperty(String name)
Gets the given SAX property
boolean
isDeclareNamespaceAttributes()
Should namespace declarations be converted to "xmlns" attributes.
protected boolean
isIgnoreableNamespace(Namespace namespace, org.dom4j.tree.NamespaceStack namespaceStack)
DOCUMENT ME!
void
parse(InputSource input)
Parses an XML document.
void
parse(String systemId)
This method is not supported.
void
setContentHandler(ContentHandler contentHandler)
Sets the ContentHandler called when SAX events are raised
void
setDTDHandler(DTDHandler handler)
Sets the DTDHandler.
void
setDeclareNamespaceAttributes(boolean declareNamespaceAttrs)
Sets whether namespace declarations should be exported as "xmlns" attributes or not.
void
setEntityResolver(EntityResolver entityResolver)
Sets the EntityResolver.
void
setErrorHandler(ErrorHandler errorHandler)
Sets the ErrorHandler.
void
setFeature(String name, boolean value)
This implementation does actually use any features but just stores them for later retrieval
void
setLexicalHandler(LexicalHandler lexicalHandler)
Sets the LexicalHandler.
void
setProperty(String name, Object value)
Sets the given SAX property
void
setXMLReader(XMLReader xmlReader)
Sets the XMLReader used to write SAX events to
protected void
startDocument()
protected void
startElement(Element element, AttributesImpl namespaceAttributes)
protected AttributesImpl
startPrefixMapping(Element element, org.dom4j.tree.NamespaceStack namespaceStack)
Fires a SAX startPrefixMapping event for all the namespaceStack which have just come into scope
void
write(String text)
Generates SAX events for the given text
void
write(CDATA cdata)
Generates SAX events for the given CDATA
void
write(Comment comment)
Generates SAX events for the given Comment
void
write(Document document)
Generates SAX events for the given Document and all its content
void
write(Element element)
Generates SAX events for the given Element and all its content
protected void
write(Element element, org.dom4j.tree.NamespaceStack namespaceStack)
void
write(Entity entity)
Generates SAX events for the given Entity
void
write(Node node)
A polymorphic method to write any Node to this SAX stream
void
write(ProcessingInstruction pi)
Generates SAX events for the given ProcessingInstruction
void
writeClose(Element element)
Writes the closing tag of an Element
protected void
writeContent(Branch branch, org.dom4j.tree.NamespaceStack namespaceStack)
void
writeOpen(Element element)
Writes the opening tag of an Element, including its Attributes but without its content.

Field Details

FEATURE_NAMESPACES

protected static final String FEATURE_NAMESPACES

FEATURE_NAMESPACE_PREFIXES

protected static final String FEATURE_NAMESPACE_PREFIXES

LEXICAL_HANDLER_NAMES

protected static final String[] LEXICAL_HANDLER_NAMES

Constructor Details

SAXWriter

public SAXWriter()

SAXWriter

public SAXWriter(ContentHandler contentHandler)

SAXWriter

public SAXWriter(ContentHandler contentHandler,
                 LexicalHandler lexicalHandler)

SAXWriter

public SAXWriter(ContentHandler contentHandler,
                 LexicalHandler lexicalHandler,
                 EntityResolver entityResolver)

Method Details

addNamespaceAttribute

protected AttributesImpl addNamespaceAttribute(AttributesImpl attrs,
                                               Namespace namespace)
If isDelcareNamespaceAttributes() is enabled then this method will add the given namespace declaration to the supplied attributes object, creating one if it does not exist.
Parameters:
attrs - DOCUMENT ME!
namespace - DOCUMENT ME!
Returns:
DOCUMENT ME!

checkForNullHandlers

protected void checkForNullHandlers()
Ensures non-null content handlers?

createAttributes

protected Attributes createAttributes(Element element,
                                      Attributes namespaceAttributes)
            throws SAXException

documentLocator

protected void documentLocator(Document document)
            throws SAXException
The org.xml.sax.Locatoris only really useful when parsing a textual document as its main purpose is to identify the line and column number. Since we are processing an in memory tree which will probably have its line number information removed, we'll just use -1 for the line and column numbers.
Parameters:
document - DOCUMENT ME!

dtdHandler

protected void dtdHandler(Document document)
            throws SAXException
We do not yet support DTD or XML Schemas so this method does nothing right now.
Parameters:
document - DOCUMENT ME!

endDocument

protected void endDocument()
            throws SAXException

endElement

protected void endElement(Element element)
            throws SAXException

endPrefixMapping

protected void endPrefixMapping(org.dom4j.tree.NamespaceStack stack,
                                int stackSize)
            throws SAXException
Fires a SAX endPrefixMapping event for all the namespaceStack which have gone out of scope
Parameters:
stack - DOCUMENT ME!
stackSize - DOCUMENT ME!

entityResolver

protected void entityResolver(Document document)
            throws SAXException

getContentHandler

public ContentHandler getContentHandler()
DOCUMENT ME!
Returns:
the ContentHandler called when SAX events are raised

getDTDHandler

public DTDHandler getDTDHandler()
DOCUMENT ME!
Returns:
the DTDHandler

getEntityResolver

public EntityResolver getEntityResolver()
DOCUMENT ME!
Returns:
the EntityResolver used when a Document contains a DTD

getErrorHandler

public ErrorHandler getErrorHandler()
DOCUMENT ME!
Returns:
the ErrorHandler

getFeature

public boolean getFeature(String name)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
Looks up the value of a feature.
Parameters:
name - DOCUMENT ME!
Returns:
DOCUMENT ME!

getLexicalHandler

public LexicalHandler getLexicalHandler()
DOCUMENT ME!
Returns:
the LexicalHandler used when a Document contains a DTD

getProperty

public Object getProperty(String name)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
Gets the given SAX property
Parameters:
name - DOCUMENT ME!
Returns:
DOCUMENT ME!

isDeclareNamespaceAttributes

public boolean isDeclareNamespaceAttributes()
Should namespace declarations be converted to "xmlns" attributes. This property defaults to false as per the SAX specification. This property is set via the SAX feature "http://xml.org/sax/features/namespace-prefixes"
Returns:
DOCUMENT ME!

isIgnoreableNamespace

protected boolean isIgnoreableNamespace(Namespace namespace,
                                        org.dom4j.tree.NamespaceStack namespaceStack)
DOCUMENT ME!
Parameters:
namespace - DOCUMENT ME!
namespaceStack - DOCUMENT ME!
Returns:
true if the given namespace is an ignorable namespace (such as Namespace.NO_NAMESPACE or Namespace.XML_NAMESPACE) or if the namespace has already been declared in the current scope

parse

public void parse(InputSource input)
            throws SAXException
Parses an XML document. This method can only accept DocumentInputSource inputs otherwise a SAXNotSupportedExceptionexception is thrown.
Parameters:
input - DOCUMENT ME!

parse

public void parse(String systemId)
            throws SAXNotSupportedException
This method is not supported.
Parameters:
systemId - DOCUMENT ME!

setContentHandler

public void setContentHandler(ContentHandler contentHandler)
Sets the ContentHandler called when SAX events are raised
Parameters:
contentHandler - is the ContentHandler called when SAX events are raised

setDTDHandler

public void setDTDHandler(DTDHandler handler)
Sets the DTDHandler.
Parameters:
handler - DOCUMENT ME!

setDeclareNamespaceAttributes

public void setDeclareNamespaceAttributes(boolean declareNamespaceAttrs)
Sets whether namespace declarations should be exported as "xmlns" attributes or not. This property is set from the SAX feature "http://xml.org/sax/features/namespace-prefixes"
Parameters:
declareNamespaceAttrs - DOCUMENT ME!

setEntityResolver

public void setEntityResolver(EntityResolver entityResolver)
Sets the EntityResolver.
Parameters:
entityResolver - is the EntityResolver

setErrorHandler

public void setErrorHandler(ErrorHandler errorHandler)
Sets the ErrorHandler.
Parameters:
errorHandler - DOCUMENT ME!

setFeature

public void setFeature(String name,
                       boolean value)
            throws SAXNotRecognizedException,
                   SAXNotSupportedException
This implementation does actually use any features but just stores them for later retrieval
Parameters:
name - DOCUMENT ME!
value - DOCUMENT ME!

setLexicalHandler

public void setLexicalHandler(LexicalHandler lexicalHandler)
Sets the LexicalHandler.
Parameters:
lexicalHandler - is the LexicalHandler

setProperty

public void setProperty(String name,
                        Object value)
Sets the given SAX property
Parameters:
name - DOCUMENT ME!
value - DOCUMENT ME!

setXMLReader

public void setXMLReader(XMLReader xmlReader)
Sets the XMLReader used to write SAX events to
Parameters:
xmlReader - is the XMLReader

startDocument

protected void startDocument()
            throws SAXException

startElement

protected void startElement(Element element,
                            AttributesImpl namespaceAttributes)
            throws SAXException

startPrefixMapping

protected AttributesImpl startPrefixMapping(Element element,
                                            org.dom4j.tree.NamespaceStack namespaceStack)
            throws SAXException
Fires a SAX startPrefixMapping event for all the namespaceStack which have just come into scope
Parameters:
element - DOCUMENT ME!
namespaceStack - DOCUMENT ME!
Returns:
DOCUMENT ME!

write

public void write(String text)
            throws SAXException
Generates SAX events for the given text
Parameters:
text - is the text to send to the SAX ContentHandler

write

public void write(CDATA cdata)
            throws SAXException
Generates SAX events for the given CDATA
Parameters:
cdata - is the CDATA to parse

write

public void write(Comment comment)
            throws SAXException
Generates SAX events for the given Comment
Parameters:
comment - is the Comment to parse

write

public void write(Document document)
            throws SAXException
Generates SAX events for the given Document and all its content
Parameters:
document - is the Document to parse

write

public void write(Element element)
            throws SAXException
Generates SAX events for the given Element and all its content
Parameters:
element - is the Element to parse

write

protected void write(Element element,
                     org.dom4j.tree.NamespaceStack namespaceStack)
            throws SAXException

write

public void write(Entity entity)
            throws SAXException
Generates SAX events for the given Entity
Parameters:
entity - is the Entity to parse

write

public void write(Node node)
            throws SAXException
A polymorphic method to write any Node to this SAX stream
Parameters:
node - DOCUMENT ME!

write

public void write(ProcessingInstruction pi)
            throws SAXException
Generates SAX events for the given ProcessingInstruction
Parameters:
pi - is the ProcessingInstruction to parse

writeClose

public void writeClose(Element element)
            throws SAXException
Writes the closing tag of an Element
Parameters:
element - Element to output.

writeContent

protected void writeContent(Branch branch,
                            org.dom4j.tree.NamespaceStack namespaceStack)
            throws SAXException

writeOpen

public void writeOpen(Element element)
            throws SAXException
Writes the opening tag of an Element, including its Attributes but without its content.
Parameters:
element - Element to output.

Copyright B) 2005 MetaStuff Ltd. All Rights Reserved. Hosted by

SourceForge Logo