Package org.smooks.engine.delivery
Class DOMReader
- java.lang.Object
-
- org.smooks.engine.delivery.DOMReader
-
- All Implemented Interfaces:
ContentHandler
,SmooksXMLReader
,XMLReader
public class DOMReader extends Object implements SmooksXMLReader
SAXWriter
writes a DOM tree to a SAX ContentHandler.- Version:
- $Revision: 1.24 $
- Author:
- James Strachan
-
-
Field Summary
Fields Modifier and Type Field Description protected static String
FEATURE_NAMESPACE_PREFIXES
protected static String
FEATURE_NAMESPACES
protected static String[]
LEXICAL_HANDLER_NAMES
-
Constructor Summary
Constructors Constructor Description DOMReader()
DOMReader(ContentHandler contentHandler)
DOMReader(ContentHandler contentHandler, LexicalHandler lexicalHandler)
DOMReader(ContentHandler contentHandler, LexicalHandler lexicalHandler, EntityResolver entityResolver)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AttributesImpl
addNamespaceAttribute(AttributesImpl attrs, QName 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)
TheLocator
is 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(Stack<QName> stack, int stackSize)
Fires a SAX endPrefixMapping event for all the namespaceStack which have gone out of scopeprotected 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 propertyprotected String
getQName(String prefix, String localName)
boolean
isDeclareNamespaceAttributes()
Should namespace declarations be converted to "xmlns" attributes.protected boolean
isIgnoreableNamespace(QName namespace, Stack<QName> namespaceStack)
DOCUMENT ME!void
parse(String systemId)
This method is not supported.void
parse(InputSource input)
Parses an XML document.void
setContentHandler(ContentHandler contentHandler)
Sets theContentHandler
called when SAX events are raisedvoid
setDeclareNamespaceAttributes(boolean declareNamespaceAttrs)
Sets whether namespace declarations should be exported as "xmlns" attributes or not.void
setDTDHandler(DTDHandler handler)
Sets theDTDHandler
.void
setEntityResolver(EntityResolver entityResolver)
Sets theEntityResolver
.void
setErrorHandler(ErrorHandler errorHandler)
Sets theErrorHandler
.void
setExecutionContext(ExecutionContext executionContext)
Set the SmooksExecutionContext
on the implementing class.void
setFeature(String name, boolean value)
This implementation does actually use any features but just stores them for later retrievalvoid
setLexicalHandler(LexicalHandler lexicalHandler)
Sets theLexicalHandler
.void
setProperty(String name, Object value)
Sets the given SAX propertyvoid
setXMLReader(XMLReader xmlReader)
Sets theXMLReader
used to write SAX events toprotected void
startDocument()
protected void
startElement(Element element, AttributesImpl namespaceAttributes)
protected AttributesImpl
startPrefixMapping(Element element, Stack<QName> namespaceStack)
Fires a SAX startPrefixMapping event for all the namespaceStack which have just come into scopevoid
write(String text)
Generates SAX events for the given textvoid
write(CDATASection cdata)
Generates SAX events for the given CDATAvoid
write(Comment comment)
Generates SAX events for the given Commentvoid
write(Document document)
Generates SAX events for the given Document and all its contentvoid
write(Element element)
Generates SAX events for the given Element and all its contentprotected void
write(Element element, Stack<QName> namespaceStack)
void
write(Entity entity)
Generates SAX events for the given Entityvoid
write(Node node)
A polymorphic method to write any Node to this SAX streamvoid
write(ProcessingInstruction pi)
Generates SAX events for the given ProcessingInstructionvoid
writeClose(Element element)
Writes the closing tag of anElement
protected void
writeContent(Node branch, Stack<QName> namespaceStack)
void
writeOpen(Element element)
Writes the opening tag of anElement
, including itsAttribute
s but without its content.
-
-
-
Field Detail
-
LEXICAL_HANDLER_NAMES
protected static final String[] LEXICAL_HANDLER_NAMES
-
FEATURE_NAMESPACE_PREFIXES
protected static final String FEATURE_NAMESPACE_PREFIXES
- See Also:
- Constant Field Values
-
FEATURE_NAMESPACES
protected static final String FEATURE_NAMESPACES
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DOMReader
public DOMReader()
-
DOMReader
public DOMReader(ContentHandler contentHandler)
-
DOMReader
public DOMReader(ContentHandler contentHandler, LexicalHandler lexicalHandler)
-
DOMReader
public DOMReader(ContentHandler contentHandler, LexicalHandler lexicalHandler, EntityResolver entityResolver)
-
-
Method Detail
-
write
public void write(Node node) throws SAXException
A polymorphic method to write any Node to this SAX stream- Parameters:
node
- DOCUMENT ME!- Throws:
SAXException
- DOCUMENT ME!
-
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- Throws:
SAXException
- if there is a SAX error processing the events
-
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- Throws:
SAXException
- if there is a SAX error processing the events
-
writeOpen
public void writeOpen(Element element) throws SAXException
Writes the opening tag of an
Element
, including itsAttribute
s but without its content.- Parameters:
element
-Element
to output.- Throws:
SAXException
- DOCUMENT ME!
-
writeClose
public void writeClose(Element element) throws SAXException
Writes the closing tag of an
Element
- Parameters:
element
-Element
to output.- Throws:
SAXException
- 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- Throws:
SAXException
- if there is a SAX error processing the events
-
write
public void write(CDATASection cdata) throws SAXException
Generates SAX events for the given CDATA- Parameters:
cdata
- is the CDATA to parse- Throws:
SAXException
- if there is a SAX error processing the events
-
write
public void write(Comment comment) throws SAXException
Generates SAX events for the given Comment- Parameters:
comment
- is the Comment to parse- Throws:
SAXException
- if there is a SAX error processing the events
-
write
public void write(Entity entity) throws SAXException
Generates SAX events for the given Entity- Parameters:
entity
- is the Entity to parse- Throws:
SAXException
- if there is a SAX error processing the events
-
write
public void write(ProcessingInstruction pi) throws SAXException
Generates SAX events for the given ProcessingInstruction- Parameters:
pi
- is the ProcessingInstruction to parse- Throws:
SAXException
- if there is a SAX error processing the events
-
isDeclareNamespaceAttributes
public boolean isDeclareNamespaceAttributes()
Should namespace declarations be converted to "xmlns" attributes. This property defaults tofalse
as per the SAX specification. This property is set via the SAX feature "http://xml.org/sax/features/namespace-prefixes"- Returns:
- 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!
-
getContentHandler
public ContentHandler getContentHandler()
DOCUMENT ME!- Specified by:
getContentHandler
in interfaceXMLReader
- Returns:
- the
ContentHandler
called when SAX events are raised
-
setContentHandler
public void setContentHandler(ContentHandler contentHandler)
Sets theContentHandler
called when SAX events are raised- Specified by:
setContentHandler
in interfaceXMLReader
- Parameters:
contentHandler
- is theContentHandler
called when SAX events are raised
-
getDTDHandler
public DTDHandler getDTDHandler()
DOCUMENT ME!- Specified by:
getDTDHandler
in interfaceXMLReader
- Returns:
- the
DTDHandler
-
setDTDHandler
public void setDTDHandler(DTDHandler handler)
Sets theDTDHandler
.- Specified by:
setDTDHandler
in interfaceXMLReader
- Parameters:
handler
- DOCUMENT ME!
-
getErrorHandler
public ErrorHandler getErrorHandler()
DOCUMENT ME!- Specified by:
getErrorHandler
in interfaceXMLReader
- Returns:
- the
ErrorHandler
-
setErrorHandler
public void setErrorHandler(ErrorHandler errorHandler)
Sets theErrorHandler
.- Specified by:
setErrorHandler
in interfaceXMLReader
- Parameters:
errorHandler
- DOCUMENT ME!
-
getEntityResolver
public EntityResolver getEntityResolver()
DOCUMENT ME!- Specified by:
getEntityResolver
in interfaceXMLReader
- Returns:
- the
EntityResolver
used when a Document contains a DTD
-
setEntityResolver
public void setEntityResolver(EntityResolver entityResolver)
Sets theEntityResolver
.- Specified by:
setEntityResolver
in interfaceXMLReader
- Parameters:
entityResolver
- is theEntityResolver
-
getLexicalHandler
public LexicalHandler getLexicalHandler()
DOCUMENT ME!- Returns:
- the
LexicalHandler
used when a Document contains a DTD
-
setLexicalHandler
public void setLexicalHandler(LexicalHandler lexicalHandler)
Sets theLexicalHandler
.- Parameters:
lexicalHandler
- is theLexicalHandler
-
setXMLReader
public void setXMLReader(XMLReader xmlReader)
Sets theXMLReader
used to write SAX events to- Parameters:
xmlReader
- is theXMLReader
-
getFeature
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Looks up the value of a feature.- Specified by:
getFeature
in interfaceXMLReader
- Parameters:
name
- DOCUMENT ME!- Returns:
- DOCUMENT ME!
- Throws:
SAXNotRecognizedException
- DOCUMENT ME!SAXNotSupportedException
- 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- Specified by:
setFeature
in interfaceXMLReader
- Parameters:
name
- DOCUMENT ME!value
- DOCUMENT ME!- Throws:
SAXNotRecognizedException
- DOCUMENT ME!SAXNotSupportedException
- DOCUMENT ME!
-
setProperty
public void setProperty(String name, Object value)
Sets the given SAX property- Specified by:
setProperty
in interfaceXMLReader
- Parameters:
name
- DOCUMENT ME!value
- DOCUMENT ME!
-
getProperty
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Gets the given SAX property- Specified by:
getProperty
in interfaceXMLReader
- Parameters:
name
- DOCUMENT ME!- Returns:
- DOCUMENT ME!
- Throws:
SAXNotRecognizedException
- DOCUMENT ME!SAXNotSupportedException
- DOCUMENT ME!
-
parse
public void parse(String systemId) throws SAXNotSupportedException
This method is not supported.- Specified by:
parse
in interfaceXMLReader
- Parameters:
systemId
- DOCUMENT ME!- Throws:
SAXNotSupportedException
- DOCUMENT ME!
-
parse
public void parse(InputSource input) throws SAXException
Parses an XML document. This method can only accept DocumentInputSource inputs otherwise aSAXNotSupportedException
exception is thrown.- Specified by:
parse
in interfaceXMLReader
- Parameters:
input
- DOCUMENT ME!- Throws:
SAXException
- DOCUMENT ME!SAXNotSupportedException
- if the input source is not wrapping a dom4j document
-
writeContent
protected void writeContent(Node branch, Stack<QName> namespaceStack) throws SAXException
- Throws:
SAXException
-
documentLocator
protected void documentLocator(Document document) throws SAXException
TheLocator
is 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!- Throws:
SAXException
- DOCUMENT ME!
-
entityResolver
protected void entityResolver(Document document) throws SAXException
- Throws:
SAXException
-
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!- Throws:
SAXException
- DOCUMENT ME!
-
startDocument
protected void startDocument() throws SAXException
- Throws:
SAXException
-
endDocument
protected void endDocument() throws SAXException
- Throws:
SAXException
-
write
protected void write(Element element, Stack<QName> namespaceStack) throws SAXException
- Throws:
SAXException
-
startPrefixMapping
protected AttributesImpl startPrefixMapping(Element element, Stack<QName> 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!
- Throws:
SAXException
- DOCUMENT ME!
-
endPrefixMapping
protected void endPrefixMapping(Stack<QName> 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!- Throws:
SAXException
- DOCUMENT ME!
-
startElement
protected void startElement(Element element, AttributesImpl namespaceAttributes) throws SAXException
- Throws:
SAXException
-
endElement
protected void endElement(Element element) throws SAXException
- Throws:
SAXException
-
createAttributes
protected Attributes createAttributes(Element element, Attributes namespaceAttributes) throws SAXException
- Throws:
SAXException
-
addNamespaceAttribute
protected AttributesImpl addNamespaceAttribute(AttributesImpl attrs, QName 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!
-
isIgnoreableNamespace
protected boolean isIgnoreableNamespace(QName namespace, Stack<QName> 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
-
checkForNullHandlers
protected void checkForNullHandlers()
Ensures non-null content handlers?
-
setExecutionContext
public void setExecutionContext(ExecutionContext executionContext)
Description copied from interface:SmooksXMLReader
Set the SmooksExecutionContext
on the implementing class.- Specified by:
setExecutionContext
in interfaceSmooksXMLReader
- Parameters:
executionContext
- The SmooksExecutionContext
.
-
-