|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.xerces.dom.NodeImpl | +--org.apache.xerces.dom.ChildNode | +--org.apache.xerces.dom.ParentNode | +--org.apache.xerces.dom.CoreDocumentImpl
The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data.
Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a Document, the Document interface also contains the factory methods needed to create these objects. The Node objects created have a ownerDocument attribute which associates them with the Document within whose context they were created.
The CoreDocumentImpl class only implements the DOM Core. Additional modules are supported by the more complete DocumentImpl subclass.
Note: When any node in the document is serialized, the entire document is serialized along with it.
Field Summary | |
protected java.lang.String |
actualEncoding
Experimental DOM Level 3 feature: Document encoding |
protected boolean |
allowGrammarAccess
Allow grammar access. |
protected int |
changes
Number of alterations made to this document since its creation. |
protected ElementImpl |
docElement
Document element. |
protected DocumentTypeImpl |
docType
Document type. |
protected java.lang.String |
encoding
Experimental DOM Level 3 feature: Document encoding |
protected boolean |
errorChecking
Bypass error checking. |
protected java.util.Hashtable |
identifiers
Identifiers. |
protected static int[] |
kidOK
Table for quick check of child insertion. |
protected boolean |
standalone
Experimental DOM Level 3 feature: Document standalone |
protected java.util.Hashtable |
userData
Table for user data attached to this document nodes. |
protected java.lang.String |
version
Experimental DOM Level 3 feature: Document version |
Fields inherited from class org.apache.xerces.dom.ParentNode |
firstChild,
fNodeListCache,
ownerDocument |
Fields inherited from class org.apache.xerces.dom.ChildNode |
nextSibling,
previousSibling |
Fields inherited from class org.apache.xerces.dom.NodeImpl |
ELEMENT_DEFINITION_NODE,
FIRSTCHILD,
flags,
HASSTRING,
IGNORABLEWS,
OWNED,
ownerNode,
READONLY,
SPECIFIED,
SYNCCHILDREN,
SYNCDATA,
UNNORMALIZED |
Fields inherited from interface org.w3c.dom.Node |
ATTRIBUTE_NODE,
CDATA_SECTION_NODE,
COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE,
DOCUMENT_NODE,
DOCUMENT_TYPE_NODE,
ELEMENT_NODE,
ENTITY_NODE,
ENTITY_REFERENCE_NODE,
NOTATION_NODE,
PROCESSING_INSTRUCTION_NODE,
TEXT_NODE |
Constructor Summary | |
CoreDocumentImpl()
NON-DOM: Actually creating a Document is outside the DOM's spec, since it has to operate in terms of a particular implementation. |
|
CoreDocumentImpl(boolean grammarAccess)
Constructor. |
|
CoreDocumentImpl(org.w3c.dom.DocumentType doctype)
For DOM2 support. |
|
CoreDocumentImpl(org.w3c.dom.DocumentType doctype,
boolean grammarAccess)
For DOM2 support. |
Method Summary | |
protected void |
addEventListener(NodeImpl node,
java.lang.String type,
org.w3c.dom.events.EventListener listener,
boolean useCapture)
|
org.w3c.dom.Node |
adoptNode(org.w3c.dom.Node source)
DOM Level 3 WD - Experimental Change the node's ownerDocument, and its subtree, to this Document |
protected void |
changed()
Denotes that this node has changed. |
protected int |
changes()
Returns the number of changes to this node. |
java.lang.Object |
clone()
Clone. |
org.w3c.dom.Node |
cloneNode(boolean deep)
Deep-clone a document, including fixing ownerDoc for the cloned children. |
protected void |
cloneNode(CoreDocumentImpl newdoc,
boolean deep)
internal method to share code with subclass |
org.w3c.dom.Attr |
createAttribute(java.lang.String name)
Factory method; creates an Attribute having this Document as its OwnerDoc. |
org.w3c.dom.Attr |
createAttributeNS(java.lang.String namespaceURI,
java.lang.String qualifiedName)
Introduced in DOM Level 2. |
org.w3c.dom.CDATASection |
createCDATASection(java.lang.String data)
Factory method; creates a CDATASection having this Document as its OwnerDoc. |
org.w3c.dom.Comment |
createComment(java.lang.String data)
Factory method; creates a Comment having this Document as its OwnerDoc. |
org.w3c.dom.DocumentFragment |
createDocumentFragment()
Factory method; creates a DocumentFragment having this Document as its OwnerDoc. |
org.w3c.dom.DocumentType |
createDocumentType(java.lang.String qualifiedName,
java.lang.String publicID,
java.lang.String systemID)
NON-DOM Factory method; creates a DocumentType having this Document as its OwnerDoc. |
org.w3c.dom.Element |
createElement(java.lang.String tagName)
Factory method; creates an Element having this Document as its OwnerDoc. |
ElementDefinitionImpl |
createElementDefinition(java.lang.String name)
NON-DOM Factory method: creates an element definition. |
org.w3c.dom.Element |
createElementNS(java.lang.String namespaceURI,
java.lang.String qualifiedName)
Introduced in DOM Level 2. |
org.w3c.dom.Entity |
createEntity(java.lang.String name)
NON-DOM Factory method; creates an Entity having this Document as its OwnerDoc. |
org.w3c.dom.EntityReference |
createEntityReference(java.lang.String name)
Factory method; creates an EntityReference having this Document as its OwnerDoc. |
org.w3c.dom.Notation |
createNotation(java.lang.String name)
NON-DOM Factory method; creates a Notation having this Document as its OwnerDoc. |
org.w3c.dom.ProcessingInstruction |
createProcessingInstruction(java.lang.String target,
java.lang.String data)
Factory method; creates a ProcessingInstruction having this Document as its OwnerDoc. |
org.w3c.dom.Text |
createTextNode(java.lang.String data)
Factory method; creates a Text node having this Document as its OwnerDoc. |
protected boolean |
dispatchEvent(NodeImpl node,
org.w3c.dom.events.Event event)
|
void |
finalize()
Call user data handlers to let them know the nodes they are related to are being deleted. |
java.lang.String |
getActualEncoding()
DOM Level 3 WD - Experimental. |
org.w3c.dom.DocumentType |
getDoctype()
For XML, this provides access to the Document Type Definition. |
org.w3c.dom.Element |
getDocumentElement()
Convenience method, allowing direct access to the child node which is considered the root of the actual document content. |
org.w3c.dom.Element |
getElementById(java.lang.String elementId)
Introduced in DOM Level 2 Returns the Element whose ID is given by elementId. |
org.w3c.dom.NodeList |
getElementsByTagName(java.lang.String tagname)
Return a live collection of all descendent Elements (not just immediate children) having the specified tag name. |
org.w3c.dom.NodeList |
getElementsByTagNameNS(java.lang.String namespaceURI,
java.lang.String localName)
Introduced in DOM Level 2. |
java.lang.String |
getEncoding()
DOM Level 3 WD - Experimental. |
boolean |
getErrorChecking()
Returns true if the DOM implementation performs error checking. |
org.w3c.dom.Element |
getIdentifier(java.lang.String idName)
Returns a previously registered element with the specified identifier name, or null if no element is registered. |
java.util.Enumeration |
getIdentifiers()
Returns an enumeration registered of identifier names. |
org.w3c.dom.DOMImplementation |
getImplementation()
Retrieve information describing the abilities of this particular DOM implementation. |
java.lang.String |
getNodeName()
Returns the node name. |
short |
getNodeType()
Returns the node type. |
org.w3c.dom.Document |
getOwnerDocument()
The Document object associated with this node. |
boolean |
getStandalone()
DOM Level 3 WD - Experimental. |
boolean |
getStrictErrorChecking()
|
java.lang.String |
getTextContent()
This attribute returns the text content of this node and its descendants. |
protected java.lang.Object |
getUserData(NodeImpl n)
NON-DOM: kept for backward compatibility Retreive user data related to a given node |
java.lang.Object |
getUserData(org.w3c.dom.Node n,
java.lang.String key)
Retrieves the object associated to a key on a this node. |
java.lang.String |
getVersion()
DOM Level 3 WD - Experimental. |
org.w3c.dom.Node |
importNode(org.w3c.dom.Node source,
boolean deep)
Copies a node from another document to this document. |
org.w3c.dom.Node |
insertBefore(org.w3c.dom.Node newChild,
org.w3c.dom.Node refChild)
Since a Document may contain at most one top-level Element child, and at most one DocumentType declaraction, we need to subclass our add-children methods to implement this constraint. |
protected boolean |
isKidOK(org.w3c.dom.Node parent,
org.w3c.dom.Node child)
Uses the kidOK lookup table to check whether the proposed tree structure is legal. |
static boolean |
isXMLName(java.lang.String s)
Check the string against XML's definition of acceptable names for elements and attributes and so on using the XMLCharacterProperties utility class |
void |
putIdentifier(java.lang.String idName,
org.w3c.dom.Element element)
Registers an identifier name with a specified element node. |
org.w3c.dom.Node |
removeChild(org.w3c.dom.Node oldChild)
Since insertBefore caches the docElement (and, currently, docType), removeChild has to know how to undo the cache REVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way |
protected void |
removeEventListener(NodeImpl node,
java.lang.String type,
org.w3c.dom.events.EventListener listener,
boolean useCapture)
|
void |
removeIdentifier(java.lang.String idName)
Removes a previously registered element with the specified identifier name. |
org.w3c.dom.Node |
replaceChild(org.w3c.dom.Node newChild,
org.w3c.dom.Node oldChild)
Since we cache the docElement (and, currently, docType), replaceChild has to update the cache REVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way |
void |
setActualEncoding(java.lang.String value)
DOM Level 3 WD - Experimental. |
void |
setEncoding(java.lang.String value)
DOM Level 3 WD - Experimental. |
void |
setErrorChecking(boolean check)
Sets whether the DOM implementation performs error checking upon operations. |
void |
setStandalone(boolean value)
DOM Level 3 WD - Experimental. |
void |
setStrictErrorChecking(boolean check)
|
void |
setTextContent(java.lang.String textContent)
This attribute returns the text content of this node and its descendants. |
protected void |
setUserData(NodeImpl n,
java.lang.Object data)
NON-DOM: kept for backward compatibility Store user data related to a given node This is a place where we could use weak references! Indeed, the node here won't be GC'ed as long as some user data is attached to it, since the userData table will have a reference to the node. |
java.lang.Object |
setUserData(org.w3c.dom.Node n,
java.lang.String key,
java.lang.Object data,
org.apache.xerces.dom3.UserDataHandler handler)
Associate an object to a key on this node. |
void |
setVersion(java.lang.String value)
DOM Level 3 WD - Experimental. |
Methods inherited from class org.apache.xerces.dom.ParentNode |
getChildNodes,
getChildNodesUnoptimized,
getFirstChild,
getLastChild,
getLength,
hasChildNodes,
item,
normalize,
setReadOnly,
synchronizeChildren |
Methods inherited from class org.apache.xerces.dom.ChildNode |
getNextSibling,
getParentNode,
getPreviousSibling |
Methods inherited from class org.apache.xerces.dom.NodeImpl |
addEventListener,
appendChild,
compareTreePosition,
dispatchEvent,
getAttributes,
getBaseURI,
getInterface,
getLocalName,
getNamespaceURI,
getNodeValue,
getPrefix,
getReadOnly,
getUserData,
getUserData,
hasAttributes,
isEqualNode,
isSameNode,
isSupported,
lookupNamespacePrefix,
lookupNamespaceURI,
removeEventListener,
setNodeValue,
setPrefix,
setUserData,
setUserData,
synchronizeData,
toString |
Methods inherited from class java.lang.Object |
equals,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
Field Detail |
protected DocumentTypeImpl docType
protected ElementImpl docElement
protected java.lang.String encoding
protected java.lang.String actualEncoding
protected java.lang.String version
protected boolean standalone
protected java.util.Hashtable userData
protected java.util.Hashtable identifiers
protected static int[] kidOK
protected int changes
Any method that alters the tree structure MUST cause or be accompanied by a call to changed(), to inform it that any outstanding NodeLists may have to be updated.
(Required because NodeList is simultaneously "live" and integer- indexed -- a bad decision in the DOM's design.)
Note that changes which do not affect the tree's structure -- changing the node's name, for example -- do _not_ have to call changed().
Alternative implementation would be to use a cryptographic Digest value rather than a count. This would have the advantage that "harmless" changes (those producing equal() trees) would not force NodeList to resynchronize. Disadvantage is that it's slightly more prone to "false negatives", though that's the difference between "wildly unlikely" and "absurdly unlikely". IF we start maintaining digests, we should consider taking advantage of them. Note: This used to be done a node basis, so that we knew what subtree changed. But since only DeepNodeList really use this today, the gain appears to be really small compared to the cost of having an int on every (parent) node plus having to walk up the tree all the way to the root to mark the branch as changed everytime a node is changed. So we now have a single counter global to the document. It means that some objects may flush their cache more often than necessary, but this makes nodes smaller and only the document needs to be marked as changed.
protected boolean allowGrammarAccess
protected boolean errorChecking
Constructor Detail |
public CoreDocumentImpl()
public CoreDocumentImpl(boolean grammarAccess)
public CoreDocumentImpl(org.w3c.dom.DocumentType doctype)
public CoreDocumentImpl(org.w3c.dom.DocumentType doctype, boolean grammarAccess)
Method Detail |
public final org.w3c.dom.Document getOwnerDocument()
Document
object associated with this node. This is
also the Document
object used to create new nodes. When
this node is a Document
or a DocumentType
which is not used with any Document
yet, this is
null
.public short getNodeType()
public java.lang.String getNodeName()
public org.w3c.dom.Node cloneNode(boolean deep)
deep
- boolean, iff true replicate childrenprotected void cloneNode(CoreDocumentImpl newdoc, boolean deep)
public org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild) throws org.w3c.dom.DOMException
While I'm doing so, I've taken advantage of the opportunity to cache documentElement and docType so we don't have to search for them. REVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way
newChildThe
- node to insert.refChildThe
- reference node, i.e., the node before which the new
node must be inserted.newChild
node, or if
the node to insert is one of this node's ancestors.
newChild
was created
from a different document than the one that created this node.
refChild
is not a child of
this node.public org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild) throws org.w3c.dom.DOMException
oldChildThe
- node being removed.oldChild
is not a child of
this node.public org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild) throws org.w3c.dom.DOMException
newChildThe
- new node to put in the child list.oldChildThe
- node being replaced in the list.newChild
node, or if
the node to put in is one of this node's ancestors.
newChild
was created
from a different document than the one that created this node.
oldChild
is not a child of
this node.public java.lang.String getTextContent() throws org.w3c.dom.DOMException
Text
node containing the string
this attribute is set to. On getting, no serialization is performed,
the returned string does not contain any markup. No whitespace
normalization is performed, the returned string does not contain the
element content whitespaces . Similarly, on setting, no parsing is
performed either, the input string is taken as pure textual content.
Node type | Content |
---|---|
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE | concatenation of the textContent
attribute value of every child node, excluding COMMENT_NODE and
PROCESSING_INSTRUCTION_NODE nodes |
ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE |
nodeValue |
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE | null |
DOMString
variable on the implementation
platform.public void setTextContent(java.lang.String textContent) throws org.w3c.dom.DOMException
Text
node containing the string
this attribute is set to. On getting, no serialization is performed,
the returned string does not contain any markup. No whitespace
normalization is performed, the returned string does not contain the
element content whitespaces . Similarly, on setting, no parsing is
performed either, the input string is taken as pure textual content.
Node type | Content |
---|---|
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE | concatenation of the textContent
attribute value of every child node, excluding COMMENT_NODE and
PROCESSING_INSTRUCTION_NODE nodes |
ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE |
nodeValue |
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE | null |
DOMString
variable on the implementation
platform.public org.w3c.dom.Attr createAttribute(java.lang.String name) throws org.w3c.dom.DOMException
name
- The name of the attribute. Note that the attribute's value
is _not_ established at the factory; remember to set it!public org.w3c.dom.CDATASection createCDATASection(java.lang.String data) throws org.w3c.dom.DOMException
data
- The initial contents of the CDATApublic org.w3c.dom.Comment createComment(java.lang.String data)
data
- The initial contents of the Comment.public org.w3c.dom.DocumentFragment createDocumentFragment()
DocumentFragment
.public org.w3c.dom.Element createElement(java.lang.String tagName) throws org.w3c.dom.DOMException
tagName
- The name of the element type to instantiate. For
XML, this is case-sensitive. For HTML, the tagName parameter may
be provided in any case, but it must be mapped to the canonical
uppercase form by the DOM implementation.public org.w3c.dom.EntityReference createEntityReference(java.lang.String name) throws org.w3c.dom.DOMException
name
- The name of the Entity we wish to refer topublic org.w3c.dom.ProcessingInstruction createProcessingInstruction(java.lang.String target, java.lang.String data) throws org.w3c.dom.DOMException
target
- The target "processor channel"data
- Parameter string to be passed to the target.public org.w3c.dom.Text createTextNode(java.lang.String data)
data
- The initial contents of the Text.public org.w3c.dom.DocumentType getDoctype()
public org.w3c.dom.Element getDocumentElement()
public org.w3c.dom.NodeList getElementsByTagName(java.lang.String tagname)
tagname
- The type of Element we want to gather. "*" will be
taken as a wildcard, meaning "all elements in the document."DeepNodeListImpl
public org.w3c.dom.DOMImplementation getImplementation()
public void setErrorChecking(boolean check)
Turning off error checking does not turn off the following checks:
public void setStrictErrorChecking(boolean check)
public boolean getErrorChecking()
public boolean getStrictErrorChecking()
public java.lang.String getActualEncoding()
null
otherwise.
public void setActualEncoding(java.lang.String value)
null
otherwise.
public void setEncoding(java.lang.String value)
public java.lang.String getEncoding()
public void setVersion(java.lang.String value)
public java.lang.String getVersion()
public void setStandalone(boolean value)
public boolean getStandalone()
public org.w3c.dom.DocumentType createDocumentType(java.lang.String qualifiedName, java.lang.String publicID, java.lang.String systemID) throws org.w3c.dom.DOMException
name
- The name of the Entity we wish to provide a value for.public org.w3c.dom.Entity createEntity(java.lang.String name) throws org.w3c.dom.DOMException
name
- The name of the Entity we wish to provide a value for.public org.w3c.dom.Notation createNotation(java.lang.String name) throws org.w3c.dom.DOMException
name
- The name of the Notation we wish to describepublic ElementDefinitionImpl createElementDefinition(java.lang.String name) throws org.w3c.dom.DOMException
public org.w3c.dom.Node importNode(org.w3c.dom.Node source, boolean deep) throws org.w3c.dom.DOMException
According to the DOM specifications, document nodes cannot be imported and a NOT_SUPPORTED_ERR exception is thrown if attempted.
importedNodeThe
- node to import.deepIf
- true
, recursively import the subtree under
the specified node; if false
, import only the node
itself, as explained above. This has no effect on Attr
, EntityReference
, and Notation
nodes.Document
.public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source)
source
- The node to adopt.DocumentImpl.importNode
public org.w3c.dom.Element getElementById(java.lang.String elementId)
Note: The DOM implementation must have information that says which attributes are of type ID. Attributes with the name "ID" are not of type ID unless so defined. Implementations that do not know whether attributes are of type ID or not are expected to return null.
getIdentifier(java.lang.String)
public void putIdentifier(java.lang.String idName, org.w3c.dom.Element element)
getIdentifier(java.lang.String)
,
removeIdentifier(java.lang.String)
public org.w3c.dom.Element getIdentifier(java.lang.String idName)
putIdentifier(java.lang.String, org.w3c.dom.Element)
,
removeIdentifier(java.lang.String)
public void removeIdentifier(java.lang.String idName)
putIdentifier(java.lang.String, org.w3c.dom.Element)
,
getIdentifier(java.lang.String)
public java.util.Enumeration getIdentifiers()
public org.w3c.dom.Element createElementNS(java.lang.String namespaceURI, java.lang.String qualifiedName) throws org.w3c.dom.DOMException
Creates an element of the given qualified name and namespace URI. If the given namespaceURI is null or an empty string and the qualifiedName has a prefix that is "xml", the created element is bound to the predefined namespace "http://www.w3.org/XML/1998/namespace" [Namespaces].
namespaceURI
- The namespace URI of the element to
create.qualifiedName
- The qualified name of the element type to
instantiate.public org.w3c.dom.Attr createAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName) throws org.w3c.dom.DOMException
Creates an attribute of the given qualified name and namespace URI. If the given namespaceURI is null or an empty string and the qualifiedName has a prefix that is "xml", the created element is bound to the predefined namespace "http://www.w3.org/XML/1998/namespace" [Namespaces].
namespaceURI
- The namespace URI of the attribute to
create. When it is null or an empty string,
this method behaves like createAttribute.qualifiedName
- The qualified name of the attribute to
instantiate.public org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String namespaceURI, java.lang.String localName)
Returns a NodeList of all the Elements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the Document tree.
namespaceURI
- The namespace URI of the elements to match
on. The special value "*" matches all
namespaces. When it is null or an empty
string, this method behaves like
getElementsByTagName.localName
- The local name of the elements to match on.
The special value "*" matches all local names.public java.lang.Object clone() throws java.lang.CloneNotSupportedException
public static boolean isXMLName(java.lang.String s)
protected boolean isKidOK(org.w3c.dom.Node parent, org.w3c.dom.Node child)
protected void changed()
protected int changes()
public java.lang.Object setUserData(org.w3c.dom.Node n, java.lang.String key, java.lang.Object data, org.apache.xerces.dom3.UserDataHandler handler)
getUserData
with the
same key.n
- The node to associate the object to.key
- The key to associate the object to.data
- The object to associate to the given key, or
null
to remove any existing association to that key.handler
- The handler to associate to that key, or
null
.DOMObject
previously associated to
the given key on this node, or null
if there was none.public java.lang.Object getUserData(org.w3c.dom.Node n, java.lang.String key)
setUserData
with the same key.n
- The node the object is associated to.key
- The key the object is associated to.DOMObject
associated to the given key
on this node, or null
if there was none.public void finalize()
protected void setUserData(NodeImpl n, java.lang.Object data)
protected java.lang.Object getUserData(NodeImpl n)
protected void addEventListener(NodeImpl node, java.lang.String type, org.w3c.dom.events.EventListener listener, boolean useCapture)
protected void removeEventListener(NodeImpl node, java.lang.String type, org.w3c.dom.events.EventListener listener, boolean useCapture)
protected boolean dispatchEvent(NodeImpl node, org.w3c.dom.events.Event event)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |