|
XML for Java 2.0.15 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.ibm.xml.dom.NodeImpl
Node 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.
Node itself implements 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.
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.
Note that the default behavior is that children are forbidden. To permit them, the subclass's constructor sets isLeafNode false.
LEVEL 1 RESTRICTION: 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.
Field Summary | |
static short |
ELEMENT_DEFINITION_NODE
Element definition node type. |
protected NodeImpl |
firstChild
First child. |
protected static int[] |
kidOK
Table for quick check of child insertion. |
protected NodeImpl |
lastChild
Last child. |
protected java.lang.String |
name
Node name. |
protected NodeImpl |
nextSibling
Next sibling. |
protected DocumentImpl |
ownerDocument
Owner document. |
protected NodeImpl |
parentNode
Parent node. |
protected NodeImpl |
previousSibling
Previous sibling. |
protected boolean |
readOnly
Read-only property. |
protected boolean |
syncChildren
Synchronization of child nodes needed. |
protected boolean |
syncData
Synchronization of data needed. |
protected java.lang.Object |
userData
NON-DOM FEATURE; see setUserData/getUserData. |
protected java.lang.String |
value
Node value. |
Constructor Summary | |
|
NodeImpl()
Constructor for serialization. |
protected |
NodeImpl(DocumentImpl ownerDocument,
java.lang.String name,
java.lang.String value)
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. |
Method Summary | |
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. |
Node |
cloneNode(boolean deep)
Returns a duplicate of a given node. |
NamedNodeMap |
getAttributes()
Return the collection of attributes associated with this node, or null if none. |
NodeList |
getChildNodes()
Obtain a NodeList enumerating all children of this node. |
Node |
getFirstChild()
The first child of this Node, or null if none. |
Node |
getLastChild()
The first child of this Node, or null if none. |
int |
getLength()
NodeList method: Count the immediate children of this node |
Node |
getNextSibling()
The next child of this node's parent, or null if none |
java.lang.String |
getNodeName()
For many nodes, nodeName is derived from their nodeType mnemonic (lowercasified and preceeded by a '#' character). |
abstract short |
getNodeType()
A short integer indicating what type of node this is. |
java.lang.String |
getNodeValue()
nodeValue is a string representation of the data contained in this node. |
Document |
getOwnerDocument()
Find the Document that this Node belongs to (the document in whose context the Node was created). |
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). |
Node |
getPreviousSibling()
The previous child of this node's parent, or null if none |
boolean |
getReadOnly()
NON-DOM: Returns true if this node is read-only. |
java.lang.Object |
getUserData()
Returns the user data associated to this node. |
boolean |
hasChildNodes()
Test whether this node has any children. |
Node |
insertBefore(Node newChild,
Node refChild)
Move one or more node(s) to our list of children. |
protected static boolean |
isKidOK(Node parent,
Node child)
Uses the kidOK lookup table to check whether the proposed tree structure is legal. |
Node |
item(int index)
NodeList method: Return the Nth immediate child of this node, or null if the index is out of bounds. |
Node |
removeChild(Node oldChild)
Remove a child from this Node. |
Node |
replaceChild(Node newChild,
Node oldChild)
Make newChild occupy the location that oldChild used to have. |
void |
setNodeValue(java.lang.String value)
Any node which can have a nodeValue (@see getNodeValue) will also accept requests to set it to a string. |
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. |
void |
setUserData(java.lang.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. |
protected void |
synchronizeChildren()
Override this method in subclass to hook in efficient internal data structure. |
protected void |
synchronizeData()
Override this method in subclass to hook in efficient internal data structure. |
java.lang.String |
toString()
NON-DOM method for debugging convenience. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
Field Detail |
public static final short ELEMENT_DEFINITION_NODE
protected DocumentImpl ownerDocument
protected NodeImpl parentNode
protected NodeImpl previousSibling
protected NodeImpl nextSibling
protected java.lang.String name
protected java.lang.String value
protected boolean readOnly
protected java.lang.Object userData
protected NodeImpl firstChild
protected NodeImpl lastChild
protected transient boolean syncChildren
protected transient boolean syncData
protected static int[] kidOK
Constructor Detail |
protected NodeImpl(DocumentImpl ownerDocument, java.lang.String name, java.lang.String value)
Every Node knows what Document it belongs to.
public NodeImpl()
Method Detail |
public abstract short getNodeType()
public java.lang.String getNodeName()
public void setNodeValue(java.lang.String value)
For most types of Node, value is null and attempting to set it will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will also be thrown if the node is read-only.
public java.lang.String getNodeValue()
For most types of Node, value is null and may not be changed.
For Text, CDATASection, ProcessingInstruction, and Comment value is a string representing the contents of the node.
For Attribute, value is the string returned by the attribute's getValue method. This will be gathered from the Attribute's children.
public Node appendChild(Node newChild) throws DOMException
insertBefore()
public Node cloneNode(boolean deep)
Example: Cloning a Text node will copy both the node and the text it contains.
Example: Cloning something that has children -- Element or Attr, for example -- will _not_ clone those children unless a "deep clone" has been requested. A shallow clone of an Attr node will yield an empty Attr of the same name.
NOTE: Clones will always be read/write, even if the node being cloned is read-only, to permit applications using only the DOM API to obtain editable copies of locked portions of the tree.
public Document getOwnerDocument()
public Node getParentNode()
public Node getNextSibling()
public Node getPreviousSibling()
public NamedNodeMap getAttributes()
com.ibm.domimpl.Element
public boolean hasChildNodes()
public NodeList getChildNodes()
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.
public Node getFirstChild()
public Node getLastChild()
public Node insertBefore(Node newChild, Node refChild) throws DOMException
newChild
- The Node to be moved to our subtree. As a
convenience feature, inserting a DocumentNode will instead insert
all its children.refChild
- Current child which newChild should be placed
immediately before. If refChild is null, the insertion occurs
after all existing Nodes, like appendChild().public Node removeChild(Node oldChild) throws DOMException
public Node replaceChild(Node newChild, Node oldChild) throws DOMException
public int getLength()
public Node item(int index)
Index
- intpublic void setReadOnly(boolean readOnly, boolean deep)
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.
readOnly
- True or false as desired.deep
- If true, children are also toggled. Note that this will
not change the state of an EntityReference or its children,
which are always read-only.public boolean getReadOnly()
public void setUserData(java.lang.Object data)
public java.lang.Object getUserData()
protected void synchronizeChildren()
protected void synchronizeData()
protected void changed()
protected static boolean isKidOK(Node parent, Node child)
public java.lang.String toString()
|
XML for Java 2.0.15 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |