APIdia Launch Partner
Top Description Fields Constructors Methods
com.sun.org.apache.xml.internal.utils

public Class DOMBuilder

extends Object
implements ContentHandler, LexicalHandler
Class Inheritance
All Implemented Interfaces
org.xml.sax.ext.LexicalHandler, org.xml.sax.ContentHandler
Imports
com.sun.org.apache.xml.internal.res.XMLErrorResources, .XMLMessages, java.util.List, .Stack, org.w3c.dom.CDATASection, .Document, .DocumentFragment, .Element, .Node, .Text, org.xml.sax.Attributes, .ContentHandler, .Locator, org.xml.sax.ext.LexicalHandler

This class takes SAX events (in addition to some extra events that SAX doesn't handle yet) and adds the result to a document or document fragment.

Field Summary

Modifier and TypeField and Description
protected Node
m_currentNode

Current node

public Document
m_doc

Root document

public DocumentFragment
m_docFrag

First node of document fragment or null if not a DocumentFragment

protected Stack<Node>
m_elemStack

Stack of element nodes

protected boolean
m_inCData

Flag indicating that we are processing a CData section

protected Node
m_nextSibling

The next sibling node

protected Node
m_root

The root node

Constructor Summary

AccessConstructor and Description
public
DOMBuilder(Document
Root document
doc
,
Node
Current node
node
)

DOMBuilder instance constructor...

public
DOMBuilder(Document
Root document
doc
,
DocumentFragment
Document fragment
docFrag
)

DOMBuilder instance constructor...

public
DOMBuilder(Document
Root document
doc
)

DOMBuilder instance constructor...

Method Summary

Modifier and TypeMethod and Description
protected void
append(Node
New node to append
newNode
)

Append a node to the current container.

public void
cdata(char[]
The characters from the XML document.
ch
,
int
The start position in the array.
start
,
int
The number of characters to read from the array.
length
)

Receive notification of cdata.

public void
characters(char[]
The characters from the XML document.
ch
,
int
The start position in the array.
start
,
int
The number of characters to read from the array.
length
)

Implements org.xml.sax.ContentHandler.characters.

Receive notification of character data.

public void
charactersRaw(char[]
Array containing the characters
ch
,
int
Index to start of characters in the array
start
,
int
Number of characters in the array
length
)

If available, when the disable-output-escaping attribute is used, output raw text without escaping.

public void
comment(char[]
An array holding the characters in the comment.
ch
,
int
The starting position in the array.
start
,
int
The number of characters to use from the array.
length
)

Implements org.xml.sax.ext.LexicalHandler.comment.

Report an XML comment anywhere in the document.

public void
endCDATA()

Implements org.xml.sax.ext.LexicalHandler.endCDATA.

Report the end of a CDATA section.

public void
endDocument()

Implements org.xml.sax.ContentHandler.endDocument.

Receive notification of the end of a document.

public void
endDTD()

Implements org.xml.sax.ext.LexicalHandler.endDTD.

Report the end of DTD declarations.

public void
endElement(String
the namespace of the element
ns
,
String
The local part of the qualified name of the element
localName
,
String
The element name
name
)

Implements org.xml.sax.ContentHandler.endElement.

Receive notification of the end of an element.

public void
endEntity(String
The name of the entity that is ending.
name
)

Implements org.xml.sax.ext.LexicalHandler.endEntity.

Report the end of an entity.

public void
endPrefixMapping(String
The prefix that was being mapping.
prefix
)

Implements org.xml.sax.ContentHandler.endPrefixMapping.

End the scope of a prefix-URI mapping.

public void
entityReference(String
name of the entity reference
name
)

Receive notivication of a entityReference.

public Node

Returns:

the current node being processed
getCurrentNode
()

Get the node currently being processed.

public Node

Returns:

the next sibling node.
getNextSibling
()

Return the next sibling node.

public Node

Returns:

The root document or document fragment if not null
getRootDocument
()

Get the root document or DocumentFragment of the DOM being created.

public Node
getRootNode()

Get the root node of the DOM tree.

public Writer

Returns:

null
getWriter
()

Return null since there is no Writer for this class.

public void
ignorableWhitespace(char[]
The characters from the XML document.
ch
,
int
The start position in the array.
start
,
int
The number of characters to read from the array.
length
)

Implements org.xml.sax.ContentHandler.ignorableWhitespace.

Receive notification of ignorable whitespace in element content.

private boolean

Returns:

true if the current node is outside the document element.
isOutsideDocElem
()

Tell if the current node is outside the document element.

public void
processingInstruction(String
The processing instruction target.
target
,
String
The processing instruction data, or null if none was supplied.
data
)

Implements org.xml.sax.ContentHandler.processingInstruction.

Receive notification of a processing instruction.

public void
setDocumentLocator(Locator
An object that can return the location of any SAX document event.
locator
)

Implements org.xml.sax.ContentHandler.setDocumentLocator.

Receive an object for locating the origin of SAX document events.

public void
setIDAttribute(String
The ID string.
id
,
Element
The associated ID.
elem
)

Set an ID string to node association in the ID table.

public void
setNextSibling(Node
the next sibling node.
nextSibling
)

Set the next sibling node, which is where the result nodes should be inserted before.

public void
skippedEntity(String
The name of the skipped entity. If it is a parameter entity, the name will begin with '%'.
name
)

Implements org.xml.sax.ContentHandler.skippedEntity.

Receive notification of a skipped entity.

public void
startCDATA()

Implements org.xml.sax.ext.LexicalHandler.startCDATA.

Report the start of a CDATA section.

public void
startDocument()

Implements org.xml.sax.ContentHandler.startDocument.

Receive notification of the beginning of a document.

public void
startDTD(String
The document type name.
name
,
String
The declared public identifier for the external DTD subset, or null if none was declared.
publicId
,
String
The declared system identifier for the external DTD subset, or null if none was declared.
systemId
)

Implements org.xml.sax.ext.LexicalHandler.startDTD.

Report the start of DTD declarations, if any.

public void
startElement(String
The namespace of the node
ns
,
String
The local part of the qualified name
localName
,
String
The element name.
name
,
Attributes
The attributes attached to the element, if any.
atts
)

Implements org.xml.sax.ContentHandler.startElement.

Receive notification of the beginning of an element.

public void
startEntity(String
The name of the entity. If it is a parameter entity, the name will begin with '%'.
name
)

Implements org.xml.sax.ext.LexicalHandler.startEntity.

Report the beginning of an entity.

public void
startPrefixMapping(String
The Namespace prefix being declared.
prefix
,
String
The Namespace URI the prefix is mapped to.
uri
)

Implements org.xml.sax.ContentHandler.startPrefixMapping.

Begin the scope of a prefix-URI Namespace mapping.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

m_currentNodeback to summary
protected Node m_currentNode

Current node

m_docback to summary
public Document m_doc

Root document

m_docFragback to summary
public DocumentFragment m_docFrag

First node of document fragment or null if not a DocumentFragment

m_elemStackback to summary
protected Stack<Node> m_elemStack

Stack of element nodes

m_inCDataback to summary
protected boolean m_inCData

Flag indicating that we are processing a CData section

m_nextSiblingback to summary
protected Node m_nextSibling

The next sibling node

m_rootback to summary
protected Node m_root

The root node

Constructor Detail

DOMBuilderback to summary
public DOMBuilder(Document doc, Node node)

DOMBuilder instance constructor... it will add the DOM nodes to the document fragment.

Parameters
doc:Document

Root document

node:Node

Current node

DOMBuilderback to summary
public DOMBuilder(Document doc, DocumentFragment docFrag)

DOMBuilder instance constructor... it will add the DOM nodes to the document fragment.

Parameters
doc:Document

Root document

docFrag:DocumentFragment

Document fragment

DOMBuilderback to summary
public DOMBuilder(Document doc)

DOMBuilder instance constructor... it will add the DOM nodes to the document.

Parameters
doc:Document

Root document

Method Detail

appendback to summary
protected void append(Node newNode) throws SAXException

Append a node to the current container.

Parameters
newNode:Node

New node to append

cdataback to summary
public void cdata(char[] ch, int start, int length) throws SAXException

Receive notification of cdata.

The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

The application must not attempt to read from the array outside of the specified range.

Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

Parameters
ch:char[]

The characters from the XML document.

start:int

The start position in the array.

length:int

The number of characters to read from the array.

See Also
ignorableWhitespace, org.xml.sax.Locator
charactersback to summary
public void characters(char[] ch, int start, int length) throws SAXException

Implements org.xml.sax.ContentHandler.characters.

Receive notification of character data.

The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

The application must not attempt to read from the array outside of the specified range.

Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

Parameters
ch:char[]

The characters from the XML document.

start:int

The start position in the array.

length:int

The number of characters to read from the array.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.characters.

any SAX exception, possibly wrapping another exception

See Also
ignorableWhitespace, org.xml.sax.Locator
charactersRawback to summary
public void charactersRaw(char[] ch, int start, int length) throws SAXException

If available, when the disable-output-escaping attribute is used, output raw text without escaping. A PI will be inserted in front of the node with the name "lotusxsl-next-is-raw" and a value of "formatter-to-dom".

Parameters
ch:char[]

Array containing the characters

start:int

Index to start of characters in the array

length:int

Number of characters in the array

commentback to summary
public void comment(char[] ch, int start, int length) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.comment.

Report an XML comment anywhere in the document. This callback will be used for comments inside or outside the document element, including comments in the external DTD subset (if read).

Parameters
ch:char[]

An array holding the characters in the comment.

start:int

The starting position in the array.

length:int

The number of characters to use from the array.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.comment.

The application may raise an exception.

endCDATAback to summary
public void endCDATA() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endCDATA.

Report the end of a CDATA section.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.endCDATA.

The application may raise an exception.

See Also
startCDATA
endDocumentback to summary
public void endDocument() throws SAXException

Implements org.xml.sax.ContentHandler.endDocument.

Receive notification of the end of a document.

The SAX parser will invoke this method only once, and it will be the last method invoked during the parse. The parser shall not invoke this method until it has either abandoned parsing (because of an unrecoverable error) or reached the end of input.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.endDocument.

any SAX exception, possibly wrapping another exception

endDTDback to summary
public void endDTD() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endDTD.

Report the end of DTD declarations.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.endDTD.

The application may raise an exception.

See Also
startDTD
endElementback to summary
public void endElement(String ns, String localName, String name) throws SAXException

Implements org.xml.sax.ContentHandler.endElement.

Receive notification of the end of an element.

The SAX parser will invoke this method at the end of every element in the XML document; there will be a corresponding startElement() event for every endElement() event (even when the element is empty).

If the element name has a namespace prefix, the prefix will still be attached to the name.

Parameters
ns:String

the namespace of the element

localName:String

The local part of the qualified name of the element

name:String

The element name

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.endElement.

any SAX exception, possibly wrapping another exception

endEntityback to summary
public void endEntity(String name) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.endEntity.

Report the end of an entity.

Parameters
name:String

The name of the entity that is ending.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.endEntity.

The application may raise an exception.

See Also
startEntity
endPrefixMappingback to summary
public void endPrefixMapping(String prefix) throws SAXException

Implements org.xml.sax.ContentHandler.endPrefixMapping.

End the scope of a prefix-URI mapping.

See startPrefixMapping for details. This event will always occur after the corresponding endElement event, but the order of endPrefixMapping events is not otherwise guaranteed.

Parameters
prefix:String

The prefix that was being mapping.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.endPrefixMapping.

the client may throw an exception during processing

See Also
startPrefixMapping, endElement
entityReferenceback to summary
public void entityReference(String name) throws SAXException

Receive notivication of a entityReference.

Parameters
name:String

name of the entity reference

getCurrentNodeback to summary
public Node getCurrentNode()

Get the node currently being processed.

Returns:Node

the current node being processed

getNextSiblingback to summary
public Node getNextSibling()

Return the next sibling node.

Returns:Node

the next sibling node.

getRootDocumentback to summary
public Node getRootDocument()

Get the root document or DocumentFragment of the DOM being created.

Returns:Node

The root document or document fragment if not null

getRootNodeback to summary
public Node getRootNode()

Get the root node of the DOM tree.

getWriterback to summary
public Writer getWriter()

Return null since there is no Writer for this class.

Returns:Writer

null

ignorableWhitespaceback to summary
public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException

Implements org.xml.sax.ContentHandler.ignorableWhitespace.

Receive notification of ignorable whitespace in element content.

Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

SAX parsers may return all contiguous whitespace in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

The application must not attempt to read from the array outside of the specified range.

Parameters
ch:char[]

The characters from the XML document.

start:int

The start position in the array.

length:int

The number of characters to read from the array.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.ignorableWhitespace.

any SAX exception, possibly wrapping another exception

See Also
characters
isOutsideDocElemback to summary
private boolean isOutsideDocElem()

Tell if the current node is outside the document element.

Returns:boolean

true if the current node is outside the document element.

processingInstructionback to summary
public void processingInstruction(String target, String data) throws SAXException

Implements org.xml.sax.ContentHandler.processingInstruction.

Receive notification of a processing instruction.

The Parser will invoke this method once for each processing instruction found: note that processing instructions may occur before or after the main document element.

A SAX parser should never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.

Parameters
target:String

The processing instruction target.

data:String

The processing instruction data, or null if none was supplied.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.processingInstruction.

any SAX exception, possibly wrapping another exception

setDocumentLocatorback to summary
public void setDocumentLocator(Locator locator)

Implements org.xml.sax.ContentHandler.setDocumentLocator.

Receive an object for locating the origin of SAX document events.

SAX parsers are strongly encouraged (though not absolutely required) to supply a locator: if it does so, it must supply the locator to the application by invoking this method before invoking any of the other methods in the ContentHandler interface.

The locator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the locator is probably not sufficient for use with a search engine.

Note that the locator will return correct information only during the invocation of the events in this interface. The application should not attempt to use it at any other time.

Parameters
locator:Locator

An object that can return the location of any SAX document event.

See Also
org.xml.sax.Locator
setIDAttributeback to summary
public void setIDAttribute(String id, Element elem)

Set an ID string to node association in the ID table.

Parameters
id:String

The ID string.

elem:Element

The associated ID.

setNextSiblingback to summary
public void setNextSibling(Node nextSibling)

Set the next sibling node, which is where the result nodes should be inserted before.

Parameters
nextSibling:Node

the next sibling node.

skippedEntityback to summary
public void skippedEntity(String name) throws SAXException

Implements org.xml.sax.ContentHandler.skippedEntity.

Receive notification of a skipped entity.

The Parser will invoke this method once for each entity skipped. Non-validating processors may skip entities if they have not seen the declarations (because, for example, the entity was declared in an external DTD subset). All processors may skip external entities, depending on the values of the http://xml.org/sax/features/external-general-entities and the http://xml.org/sax/features/external-parameter-entities properties.

Parameters
name:String

The name of the skipped entity. If it is a parameter entity, the name will begin with '%'.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.skippedEntity.

any SAX exception, possibly wrapping another exception

startCDATAback to summary
public void startCDATA() throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startCDATA.

Report the start of a CDATA section.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.startCDATA.

The application may raise an exception.

See Also
endCDATA
startDocumentback to summary
public void startDocument() throws SAXException

Implements org.xml.sax.ContentHandler.startDocument.

Receive notification of the beginning of a document.

The SAX parser will invoke this method only once, before any other methods in this interface or in DTDHandler (except for setDocumentLocator).

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.startDocument.

any SAX exception, possibly wrapping another exception

startDTDback to summary
public void startDTD(String name, String publicId, String systemId) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startDTD.

Report the start of DTD declarations, if any. Any declarations are assumed to be in the internal subset unless otherwise indicated.

Parameters
name:String

The document type name.

publicId:String

The declared public identifier for the external DTD subset, or null if none was declared.

systemId:String

The declared system identifier for the external DTD subset, or null if none was declared.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.startDTD.

The application may raise an exception.

See Also
endDTD, startEntity
startElementback to summary
public void startElement(String ns, String localName, String name, Attributes atts) throws SAXException

Implements org.xml.sax.ContentHandler.startElement.

Receive notification of the beginning of an element.

The Parser will invoke this method at the beginning of every element in the XML document; there will be a corresponding endElement() event for every startElement() event (even when the element is empty). All of the element's content will be reported, in order, before the corresponding endElement() event.

If the element name has a namespace prefix, the prefix will still be attached. Note that the attribute list provided will contain only attributes with explicit values (specified or defaulted): #IMPLIED attributes will be omitted.

Parameters
ns:String

The namespace of the node

localName:String

The local part of the qualified name

name:String

The element name.

atts:Attributes

The attributes attached to the element, if any.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.startElement.

any SAX exception, possibly wrapping another exception

See Also
endElement, org.xml.sax.Attributes
startEntityback to summary
public void startEntity(String name) throws SAXException

Implements org.xml.sax.ext.LexicalHandler.startEntity.

Report the beginning of an entity. The start and end of the document entity are not reported. The start and end of the external DTD subset are reported using the pseudo-name "[dtd]". All other events must be properly nested within start/end entity events.

Parameters
name:String

The name of the entity. If it is a parameter entity, the name will begin with '%'.

Exceptions
SAXException:

Doc from org.xml.sax.ext.LexicalHandler.startEntity.

The application may raise an exception.

See Also
endEntity, org.xml.sax.ext.DeclHandler#internalEntityDecl, org.xml.sax.ext.DeclHandler#externalEntityDecl
startPrefixMappingback to summary
public void startPrefixMapping(String prefix, String uri) throws SAXException

Implements org.xml.sax.ContentHandler.startPrefixMapping.

Begin the scope of a prefix-URI Namespace mapping.

The information from this event is not necessary for normal Namespace processing: the SAX XML reader will automatically replace prefixes for element and attribute names when the http://xml.org/sax/features/namespaces feature is true (the default).

There are cases, however, when applications need to use prefixes in character data or in attribute values, where they cannot safely be expanded automatically; the start/endPrefixMapping event supplies the information to the application to expand prefixes in those contexts itself, if necessary.

Note that start/endPrefixMapping events are not guaranteed to be properly nested relative to each-other: all startPrefixMapping events will occur before the corresponding startElement event, and all endPrefixMapping events will occur after the corresponding endElement event, but their order is not guaranteed.

Parameters
prefix:String

The Namespace prefix being declared.

uri:String

The Namespace URI the prefix is mapped to.

Exceptions
SAXException:

Doc from org.xml.sax.ContentHandler.startPrefixMapping.

the client may throw an exception during processing

See Also
endPrefixMapping, startElement