| java.lang.Object org.apache.xerces.dom.NodeImpl
All known Subclasses: org.apache.xerces.dom.NotationImpl, org.apache.xerces.dom.AttrImpl, org.apache.xerces.dom.ChildNode,
NodeImpl | abstract public class NodeImpl implements Node,NodeList,EventTarget,Cloneable,Serializable(Code) | | NodeImpl provides the basic structure of a DOM tree. It is never used
directly, but instead is subclassed to add type and data
information, and additional methods, appropriate to each node of
the tree. Only its subclasses should be instantiated -- and those,
with the exception of Document itself, only through a specific
Document's factory methods.
The Node interface provides shared behaviors such as siblings and
children, both for consistancy and so that the most common tree
operations may be performed without constantly having to downcast
to specific node types. When there is no obvious mapping for one of
these queries, it will respond with null.
Note that the default behavior is that children are forbidden. To
permit them, the subclass ParentNode overrides several methods.
NodeImpl also implements NodeList, so it can return itself in
response to the getChildNodes() query. This eliminiates the need
for a separate ChildNodeList object. Note that this is an
IMPLEMENTATION DETAIL; applications should _never_ assume that
this identity exists.
All nodes in a single document must originate
in that document. (Note that this is much tighter than "must be
same implementation") Nodes are all aware of their ownerDocument,
and attempts to mismatch will throw WRONG_DOCUMENT_ERR.
However, to save memory not all nodes always have a direct reference
to their ownerDocument. When a node is owned by another node it relies
on its owner to store its ownerDocument. Parent nodes always store it
though, so there is never more than one level of indirection.
And when a node doesn't have an owner, ownerNode refers to its
ownerDocument.
This class doesn't directly support mutation events, however, it still
implements the EventTarget interface and forward all related calls to the
document so that the document class do so.
author: Arnaud Le Hors, IBM author: Joe Kesselman, IBM since: PR-DOM-Level-1-19980818. |
Constructor Summary | |
protected | NodeImpl(CoreDocumentImpl ownerDocument) No public constructor; only subclasses of Node should be
instantiated, and those normally via a Document's factory methods
Every Node knows what Document it belongs to. | public | NodeImpl() Constructor for serialization. |
Method Summary | |
public void | addEventListener(String type, EventListener listener, boolean useCapture) | public Node | appendChild(Node newChild) Adds a child node to the end of the list of children for this node. | protected void | changed() Denotes that this node has changed. | protected int | changes() Returns the number of changes to this node. | public Node | cloneNode(boolean deep) Returns a duplicate of a given node. | public boolean | dispatchEvent(Event event) | public NamedNodeMap | getAttributes() Return the collection of attributes associated with this node,
or null if none. | public NodeList | getChildNodes() Obtain a NodeList enumerating all children of this node. | public Node | getFirstChild() The first child of this Node, or null if none. | public Node | getLastChild() The first child of this Node, or null if none. | public int | getLength() NodeList method: Count the immediate children of this node
By default we do not have any children, ParentNode overrides this. | public String | getLocalName() Introduced in DOM Level 2. | public String | getNamespaceURI() Introduced in DOM Level 2. | public Node | getNextSibling() | abstract public String | getNodeName() the name of this node. | abstract public short | getNodeType() A short integer indicating what type of node this is. | public String | getNodeValue() Returns the node value. | public Document | getOwnerDocument() Find the Document that this Node belongs to (the document in
whose context the Node was created). | public Node | getParentNode() Obtain the DOM-tree parent of this node, or null if it is not
currently active in the DOM tree (perhaps because it has just been
created or removed). | public String | getPrefix() Introduced in DOM Level 2. | public Node | getPreviousSibling() | public boolean | getReadOnly() NON-DOM: Returns true if this node is read-only. | public Object | getUserData() NON-DOM:
Returns the user data associated to this node. | public boolean | hasAttributes() Returns whether this node (if it is an element) has any attributes. | public boolean | hasChildNodes() Test whether this node has any children. | final boolean | hasStringValue() | final void | hasStringValue(boolean value) | public Node | insertBefore(Node newChild, Node refChild) Move one or more node(s) to our list of children. | final boolean | internalIsIgnorableWhitespace() | final boolean | isFirstChild() | final void | isFirstChild(boolean value) | final void | isIgnorableWhitespace(boolean value) | final boolean | isNormalized() | final void | isNormalized(boolean value) | final boolean | isOwned() | final void | isOwned(boolean value) | final boolean | isReadOnly() | final void | isReadOnly(boolean value) | final boolean | isSpecified() | final void | isSpecified(boolean value) | public boolean | isSupported(String feature, String version) Introduced in DOM Level 2. | public Node | item(int index) NodeList method: Return the Nth immediate child of this node, or
null if the index is out of bounds. | final boolean | needsSyncChildren() | final void | needsSyncChildren(boolean value) | final boolean | needsSyncData() | final void | needsSyncData(boolean value) | public void | normalize() Puts all Text nodes in the full depth of the sub-tree
underneath this Node , including attribute nodes, into a
"normal" form where only markup (e.g., tags, comments, processing
instructions, CDATA sections, and entity references) separates
Text nodes, i.e., there are no adjacent Text
nodes. | CoreDocumentImpl | ownerDocument() | NodeImpl | parentNode() | ChildNode | previousSibling() | public Node | removeChild(Node oldChild) Remove a child from this Node. | public void | removeEventListener(String type, EventListener listener, boolean useCapture) | public Node | replaceChild(Node newChild, Node oldChild) Make newChild occupy the location that oldChild used to
have. | public void | setNodeValue(String x) Sets the node value. | void | setOwnerDocument(CoreDocumentImpl doc) | public void | setPrefix(String prefix) Introduced in DOM Level 2. | public void | setReadOnly(boolean readOnly, boolean deep) NON-DOM: PR-DOM-Level-1-19980818 mentions readonly nodes in conjunction
with Entities, but provides no API to support this.
Most DOM users should not touch this method. | public void | setUserData(Object data) NON-DOM: As an alternative to subclassing the DOM, this implementation
has been extended with the ability to attach an object to each node.
(If you need multiple objects, you can attach a collection such as a
vector or hashtable, then attach your application information to that.)
Important Note: You are responsible for removing references
to your data on nodes that are no longer used. | protected void | synchronizeData() Override this method in subclass to hook in efficient
internal data structure. | public String | toString() NON-DOM method for debugging convenience. |
ELEMENT_DEFINITION_NODE | final public static short ELEMENT_DEFINITION_NODE(Code) | | Element definition node type.
|
FIRSTCHILD | final protected static short FIRSTCHILD(Code) | | |
HASSTRING | final protected static short HASSTRING(Code) | | |
IGNORABLEWS | final protected static short IGNORABLEWS(Code) | | |
OWNED | final protected static short OWNED(Code) | | |
READONLY | final protected static short READONLY(Code) | | |
SPECIFIED | final protected static short SPECIFIED(Code) | | |
SYNCCHILDREN | final protected static short SYNCCHILDREN(Code) | | |
SYNCDATA | final protected static short SYNCDATA(Code) | | |
UNNORMALIZED | final protected static short UNNORMALIZED(Code) | | |
flags | protected short flags(Code) | | |
serialVersionUID | final static long serialVersionUID(Code) | | Serialization version.
|
NodeImpl | protected NodeImpl(CoreDocumentImpl ownerDocument)(Code) | | No public constructor; only subclasses of Node should be
instantiated, and those normally via a Document's factory methods
Every Node knows what Document it belongs to.
|
NodeImpl | public NodeImpl()(Code) | | Constructor for serialization.
|
appendChild | public Node appendChild(Node newChild) throws DOMException(Code) | | Adds a child node to the end of the list of children for this node.
Convenience shorthand for insertBefore(newChild,null).
See Also: NodeImpl.insertBefore(Node,Node) See Also: See Also: By default we do not accept any children, ParentNode overrides this. See Also: ParentNode throws: DOMException - (HIERARCHY_REQUEST_ERR) if newChild is of atype that shouldn't be a child of this node. throws: DOMException - (WRONG_DOCUMENT_ERR) if newChild has adifferent owner document than we do. throws: DOMException - (NO_MODIFICATION_ALLOWED_ERR) if this node isread-only.
|
changed | protected void changed()(Code) | | Denotes that this node has changed.
|
changes | protected int changes()(Code) | | Returns the number of changes to this node.
|
cloneNode | public Node cloneNode(boolean deep)(Code) | | Returns a duplicate of a given node. You can consider this a
generic "copy constructor" for nodes. The newly returned object should
be completely independent of the source object's subtree, so changes
in one after the clone has been made will not affect the other.
Note: since we never have any children deep is meaningless here,
ParentNode overrides this behavior.
See Also: ParentNode See Also: See Also: Example: Cloning a Text node will copy both the node and the text it See Also: contains. See Also:
See Also: Example: Cloning something that has children -- Element or Attr, for See Also: example -- will _not_ clone those children unless a "deep clone" See Also: has been requested. A shallow clone of an Attr node will yield an See Also: empty Attr of the same name. See Also:
See Also: NOTE: Clones will always be read/write, even if the node being cloned See Also: is read-only, to permit applications using only the DOM API to obtain See Also: editable copies of locked portions of the tree.
|
dispatchEvent | public boolean dispatchEvent(Event event)(Code) | | |
getAttributes | public NamedNodeMap getAttributes()(Code) | | Return the collection of attributes associated with this node,
or null if none. At this writing, Element is the only type of node
which will ever have attributes.
See Also: ElementImpl |
getChildNodes | public NodeList getChildNodes()(Code) | | Obtain a NodeList enumerating all children of this node. If there
are none, an (initially) empty NodeList is returned.
NodeLists are "live"; as children are added/removed the NodeList
will immediately reflect those changes. Also, the NodeList refers
to the actual nodes, so changes to those nodes made via the DOM tree
will be reflected in the NodeList and vice versa.
In this implementation, Nodes implement the NodeList interface and
provide their own getChildNodes() support. Other DOMs may solve this
differently.
|
getFirstChild | public Node getFirstChild()(Code) | | The first child of this Node, or null if none.
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode |
getLastChild | public Node getLastChild()(Code) | | The first child of this Node, or null if none.
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode |
getLength | public int getLength()(Code) | | NodeList method: Count the immediate children of this node
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode int |
getLocalName | public String getLocalName()(Code) | | Introduced in DOM Level 2.
Returns the local part of the qualified name of this node.
For nodes created with a DOM Level 1 method, such as createElement
from the Document interface, and for nodes of any type other than
ELEMENT_NODE and ATTRIBUTE_NODE this is the same as the nodeName
attribute.
since: WD-DOM-Level-2-19990923 See Also: AttrNSImpl See Also: ElementNSImpl |
getNamespaceURI | public String getNamespaceURI()(Code) | | Introduced in DOM Level 2.
The namespace URI of this node, or null if it is unspecified. When this
node is of any type other than ELEMENT_NODE and ATTRIBUTE_NODE, this is
always null and setting it has no effect.
This is not a computed value that is the result of a namespace lookup
based on an examination of the namespace declarations in scope. It is
merely the namespace URI given at creation time.
For nodes created with a DOM Level 1 method, such as createElement
from the Document interface, this is null.
since: WD-DOM-Level-2-19990923 See Also: AttrNSImpl See Also: ElementNSImpl |
getNextSibling | public Node getNextSibling()(Code) | | The next child of this node's parent, or null if none
|
getNodeName | abstract public String getNodeName()(Code) | | the name of this node.
|
getNodeType | abstract public short getNodeType()(Code) | | A short integer indicating what type of node this is. The named
constants for this value are defined in the org.w3c.dom.Node interface.
|
getNodeValue | public String getNodeValue()(Code) | | Returns the node value.
|
getOwnerDocument | public Document getOwnerDocument()(Code) | | Find the Document that this Node belongs to (the document in
whose context the Node was created). The Node may or may not
currently be part of that Document's actual contents.
|
getParentNode | public Node getParentNode()(Code) | | Obtain the DOM-tree parent of this node, or null if it is not
currently active in the DOM tree (perhaps because it has just been
created or removed). Note that Document, DocumentFragment, and
Attribute will never have parents.
|
getPrefix | public String getPrefix()(Code) | | Introduced in DOM Level 2.
The namespace prefix of this node, or null if it is unspecified. When
this node is of any type other than ELEMENT_NODE and ATTRIBUTE_NODE this
is always null and setting it has no effect.
For nodes created with a DOM Level 1 method, such as createElement
from the Document interface, this is null.
since: WD-DOM-Level-2-19990923 See Also: AttrNSImpl See Also: ElementNSImpl |
getPreviousSibling | public Node getPreviousSibling()(Code) | | The previous child of this node's parent, or null if none
|
getReadOnly | public boolean getReadOnly()(Code) | | NON-DOM: Returns true if this node is read-only. This is a
shallow check.
|
getUserData | public Object getUserData()(Code) | | NON-DOM:
Returns the user data associated to this node.
|
hasAttributes | public boolean hasAttributes()(Code) | | Returns whether this node (if it is an element) has any attributes.
true if this node has any attributes, false otherwise. since: DOM Level 2 See Also: ElementImpl |
hasChildNodes | public boolean hasChildNodes()(Code) | | Test whether this node has any children. Convenience shorthand
for (Node.getFirstChild()!=null)
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode |
hasStringValue | final boolean hasStringValue()(Code) | | |
hasStringValue | final void hasStringValue(boolean value)(Code) | | |
insertBefore | public Node insertBefore(Node newChild, Node refChild) throws DOMException(Code) | | Move one or more node(s) to our list of children. Note that this
implicitly removes them from their previous parent.
By default we do not accept any children, ParentNode overrides this.
See Also: ParentNode Parameters: newChild - The Node to be moved to our subtree. As aconvenience feature, inserting a DocumentNode will instead insertall its children. Parameters: refChild - Current child which newChild should be placedimmediately before. If refChild is null, the insertion occursafter all existing Nodes, like appendChild(). throws: DOMException - (HIERARCHY_REQUEST_ERR) if newChild is of atype that shouldn't be a child of this node, or if newChild is anancestor of this node. throws: DOMException - (WRONG_DOCUMENT_ERR) if newChild has adifferent owner document than we do. throws: DOMException - (NOT_FOUND_ERR) if refChild is not a child ofthis node. throws: DOMException - (NO_MODIFICATION_ALLOWED_ERR) if this node isread-only. |
internalIsIgnorableWhitespace | final boolean internalIsIgnorableWhitespace()(Code) | | |
isFirstChild | final boolean isFirstChild()(Code) | | |
isFirstChild | final void isFirstChild(boolean value)(Code) | | |
isIgnorableWhitespace | final void isIgnorableWhitespace(boolean value)(Code) | | |
isNormalized | final boolean isNormalized()(Code) | | |
isNormalized | final void isNormalized(boolean value)(Code) | | |
isOwned | final boolean isOwned()(Code) | | |
isOwned | final void isOwned(boolean value)(Code) | | |
isReadOnly | final boolean isReadOnly()(Code) | | |
isReadOnly | final void isReadOnly(boolean value)(Code) | | |
isSpecified | final boolean isSpecified()(Code) | | |
isSpecified | final void isSpecified(boolean value)(Code) | | |
isSupported | public boolean isSupported(String feature, String version)(Code) | | Introduced in DOM Level 2.
Tests whether the DOM implementation implements a specific feature and
that feature is supported by this node.
Parameters: feature - The package name of the feature to test. This is the samename as what can be passed to the method hasFeature onDOMImplementation. Parameters: version - This is the version number of the package name totest. In Level 2, version 1, this is the string "2.0". If the version isnot specified, supporting any version of the feature will cause themethod to return true. boolean Returns true if this node defines a subtree within whichthe specified feature is supported, false otherwise. since: WD-DOM-Level-2-19990923 |
item | public Node item(int index)(Code) | | NodeList method: Return the Nth immediate child of this node, or
null if the index is out of bounds.
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode org.w3c.dom.Node Parameters: Index - int |
needsSyncChildren | final boolean needsSyncChildren()(Code) | | |
needsSyncChildren | final void needsSyncChildren(boolean value)(Code) | | |
needsSyncData | final boolean needsSyncData()(Code) | | |
needsSyncData | final void needsSyncData(boolean value)(Code) | | |
normalize | public void normalize()(Code) | | Puts all Text nodes in the full depth of the sub-tree
underneath this Node , including attribute nodes, into a
"normal" form where only markup (e.g., tags, comments, processing
instructions, CDATA sections, and entity references) separates
Text nodes, i.e., there are no adjacent Text
nodes. This can be used to ensure that the DOM view of a document is
the same as if it were saved and re-loaded, and is useful when
operations (such as XPointer lookups) that depend on a particular
document tree structure are to be used.In cases where the document
contains CDATASections , the normalize operation alone may
not be sufficient, since XPointers do not differentiate between
Text nodes and CDATASection nodes.
Note that this implementation simply calls normalize() on this Node's
children. It is up to implementors or Node to override normalize()
to take action.
|
ownerDocument | CoreDocumentImpl ownerDocument()(Code) | | same as above but returns internal type and this one is not overridden
by CoreDocumentImpl to return null
|
removeChild | public Node removeChild(Node oldChild) throws DOMException(Code) | | Remove a child from this Node. The removed child's subtree
remains intact so it may be re-inserted elsewhere.
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode oldChild, in its new state (removed). throws: DOMException - (NOT_FOUND_ERR) if oldChild is not a child ofthis node. throws: DOMException - (NO_MODIFICATION_ALLOWED_ERR) if this node isread-only. |
replaceChild | public Node replaceChild(Node newChild, Node oldChild) throws DOMException(Code) | | Make newChild occupy the location that oldChild used to
have. Note that newChild will first be removed from its previous
parent, if any. Equivalent to inserting newChild before oldChild,
then removing oldChild.
By default we do not have any children, ParentNode overrides this.
See Also: ParentNode throws: DOMException - (HIERARCHY_REQUEST_ERR) if newChild is of atype that shouldn't be a child of this node, or if newChild isone of our ancestors. throws: DOMException - (WRONG_DOCUMENT_ERR) if newChild has adifferent owner document than we do. throws: DOMException - (NOT_FOUND_ERR) if oldChild is not a child ofthis node. throws: DOMException - (NO_MODIFICATION_ALLOWED_ERR) if this node isread-only. |
setPrefix | public void setPrefix(String prefix) throws DOMException(Code) | | Introduced in DOM Level 2.
The namespace prefix of this node, or null if it is unspecified. When
this node is of any type other than ELEMENT_NODE and ATTRIBUTE_NODE
this is always null and setting it has no effect.
For nodes created with a DOM Level 1 method, such as createElement from
the Document interface, this is null.
Note that setting this attribute changes the nodeName attribute, which
holds the qualified name, as well as the tagName and name attributes of
the Element and Attr interfaces, when applicable.
throws: INVALID_CHARACTER_ERR - Raised if the specifiedprefix contains an invalid character. since: WD-DOM-Level-2-19990923 See Also: AttrNSImpl See Also: ElementNSImpl |
setReadOnly | public void setReadOnly(boolean readOnly, boolean deep)(Code) | | NON-DOM: PR-DOM-Level-1-19980818 mentions readonly nodes in conjunction
with Entities, but provides no API to support this.
Most DOM users should not touch this method. Its anticpated use
is during construction of EntityRefernces, where it will be used to
lock the contents replicated from Entity so they can't be casually
altered. It _could_ be published as a DOM extension, if desired.
Note: since we never have any children deep is meaningless here,
ParentNode overrides this behavior.
See Also: ParentNode Parameters: readOnly - True or false as desired. Parameters: deep - If true, children are also toggled. Note that this willnot change the state of an EntityReference or its children,which are always read-only. |
setUserData | public void setUserData(Object data)(Code) | | NON-DOM: As an alternative to subclassing the DOM, this implementation
has been extended with the ability to attach an object to each node.
(If you need multiple objects, you can attach a collection such as a
vector or hashtable, then attach your application information to that.)
Important Note: You are responsible for removing references
to your data on nodes that are no longer used. Failure to do so will
prevent the nodes, your data is attached to, to be garbage collected
until the whole document is.
Parameters: data - the object to store or null to remove any existing reference |
synchronizeData | protected void synchronizeData()(Code) | | Override this method in subclass to hook in efficient
internal data structure.
|
toString | public String toString()(Code) | | NON-DOM method for debugging convenience.
|
|
|