public abstract class AbstractGroup extends AbstractItem implements Group
The default implementation of newChildren is for the semantic of Element. A deriving class has to re-implement it, if it is not applicable. Example, Document.
Item
,
Serialized FormModifier and Type | Class and Description |
---|---|
protected class |
AbstractGroup.ChildArray
The array to hold children.
|
protected static class |
AbstractGroup.ElementMap
Stores a 'cached' map of child elements to speed up the access.
|
Modifier and Type | Field and Description |
---|---|
protected java.util.List<Item> |
_children
The list of the children.
|
FIND_BY_PREFIX, FIND_BY_REGEX, FIND_BY_TAGNAME, FIND_IGNORE_CASE, FIND_RECURSIVE
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
Modifier | Constructor and Description |
---|---|
protected |
AbstractGroup()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
boolean |
anyElement() |
org.w3c.dom.Node |
appendChild(org.w3c.dom.Node newChild) |
java.lang.Object |
clone()
Clones this object (a deep cloning not including contents contained
in Textual nodes).
|
int |
coalesce(boolean recursive)
Coalesces children if they are siblings with the same type
instances of Textual, Textual.isCoalesceable returns true.
|
java.util.List<Item> |
detachChildren()
Detaches all children and returns them in a list.
|
org.w3c.dom.NodeList |
getChildNodes() |
java.util.List<Item> |
getChildren()
Gets all children.
|
Element |
getElement(java.lang.String tname)
Gets the first Element-type child with the tag name.
|
Element |
getElement(java.lang.String namespace,
java.lang.String name,
int mode)
Gets the first Element-type child that matches the giving criteria.
|
int |
getElementIndex(int indexFrom,
java.lang.String tname)
Gets the index of the first Element-type child with the specified name.
|
int |
getElementIndex(int indexFrom,
java.lang.String namespace,
java.lang.String name,
int mode)
Gets the index of the Element-type first child that match the specified
criteria.
|
java.util.Set<java.lang.String> |
getElementNames()
Returns a readonly set of names of element children.
|
java.util.List<Element> |
getElements()
Returns a cloned copy of all element children
Unlike
Group.getChildren() and Group.getElementNames() ,
the returned list is NOT a 'live-facade' of the real ones. |
java.util.List<Element> |
getElements(java.lang.String tname)
Gets a readonly list of children with the tag name.
|
java.util.List<Element> |
getElements(java.lang.String namespace,
java.lang.String name,
int mode)
Gets a readonly list of Element-type children that match the giving
criteria.
|
java.lang.String |
getElementValue(java.lang.String tname,
boolean trim)
Gets the text of the first Element-type child with the tag name,
with a trimming option.
|
java.lang.String |
getElementValue(java.lang.String namespace,
java.lang.String name,
int mode,
boolean trim)
Gets the value of the first Element-type child that matches
the giving criteria, with a trimming option.
|
org.w3c.dom.Node |
getFirstChild() |
org.w3c.dom.Node |
getLastChild() |
boolean |
hasChildNodes() |
org.w3c.dom.Node |
insertBefore(org.w3c.dom.Node newChild,
org.w3c.dom.Node refChild) |
protected java.util.List<Item> |
newChildren()
Creates a list to hold child vertices.
|
org.w3c.dom.Node |
removeChild(org.w3c.dom.Node oldChild) |
org.w3c.dom.Node |
replaceChild(org.w3c.dom.Node newChild,
org.w3c.dom.Node oldChild) |
cloneNode, compareDocumentPosition, detach, equals, getAttributes, getBaseURI, getDocument, getFeature, getLocalName, getLocator, getNamespaceURI, getNextSibling, getNodeName, getNodeValue, getOwnerDocument, getParent, getParentNode, getPrefix, getPreviousSibling, getText, getTextContent, getUserData, hasAttributes, hashCode, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, match, normalize, setLocator, setName, setNodeValue, setParent, setPrefix, setText, setTextContent, setUserData
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
detach, getDocument, getLocator, getName, getParent, getText, setLocator, setName, setParent, setText
protected java.util.List<Item> _children
protected java.util.List<Item> newChildren()
The default implementation obeys the semantic of Element, i.e., it doen't allow any child that cannot be a child of Element.
For performance issue, we introduced a map to improve the search speed for Element node associated with a tag name.
public final java.util.List<Item> getChildren()
Group
The returned list is "live". Any modification to it affects
the node. On the other hand, Group.getElements(String)
returns
a copy.
Unlike JDOM, it won't coalesce adjacent children automatically since it might violate the caller's expectation about List. Rather, we provide coalesce to let caller do the merging explicitly. Note: when building a iDOM tree from a source (SAXBuilder.build), coalesce() will be invoked automatically.
Note: not all items supports children. If this item doesn't, it returns an empty list. And, if any invocation tries to add vertices to the returned list will cause UnsupportOperationException.
getChildren
in interface Group
public final java.util.List<Item> detachChildren()
Group
Note: you cannot add children to anther Group by doing
group.addAll(e.getChildren())
, because you have to detach
them first. Then, you could use this method:
group.addAll(e.detachChildren());
detachChildren
in interface Group
public final boolean anyElement()
public final java.util.Set<java.lang.String> getElementNames()
Group
Group.getElements(java.lang.String, java.lang.String, int)
to get elements.
The returned list is a 'live-facade' of the real ones, so
the performance is good, and any modification to Group.getChildren()
will affect it.
getElementNames
in interface Group
Group.getElements()
public final java.util.List<Element> getElements()
Group
Unlike Group.getChildren()
and Group.getElementNames()
,
the returned list is NOT a 'live-facade' of the real ones.
getElements
in interface Group
Group.getElementNames()
public final int getElementIndex(int indexFrom, java.lang.String namespace, java.lang.String name, int mode)
Group
Note: only Element-type children are returned, since others have no name.
getElementIndex
in interface Group
indexFrom
- the index to start searching from; 0 for beginningnamespace
- the namespace URI if FIND_BY_PREFIX is not specified;
the namespace prefix if FIND_BY_PREFIX specified; null to ignorename
- the local name if FIND_BY_TAGNAME is not specified;
the tag name if FIND_BY_TAGNAME specified; null to ignoremode
- the search mode; zero or any combination of
Item.FIND_xxx, except FIND_RECURSIVEpublic final int getElementIndex(int indexFrom, java.lang.String tname)
Group
Note: only Element-type children are returned, since others have no name.
getChildren().add(getElementIndex(0, "pre:name"),
new Element("pre:another"));
getElementIndex
in interface Group
indexFrom
- the index to start searching from; 0 for beginningtname
- the tag name (i.e., Namespaceable.getName)public final Element getElement(java.lang.String namespace, java.lang.String name, int mode)
Group
Note: only Element-type children are returned. Depending on the mode, the searching is usually linear -- take O(n) to complete.
getElement
in interface Group
namespace
- the namespace URI if FIND_BY_PREFIX is not specified;
the namespace prefix if FIND_BY_PREFIX specified; null to ignorename
- the local name if FIND_BY_TAGNAME is not specified;
the tag name if FIND_BY_TAGNAME specified; null to ignoremode
- the search mode; zero or any combination of FIND_xxx.public final Element getElement(java.lang.String tname)
Group
Note: only Element-type children are returned. Also, we did some optimization for this method so its access time is nearly constant.
getElement
in interface Group
tname
- the tag name (i.e., Namespaceable.getName)public final java.util.List<Element> getElements(java.lang.String namespace, java.lang.String name, int mode)
Group
Unlike Element.getElementsByTagName(java.lang.String)
, this method only
returns child elements, excluding grand children and other descendants.
The returned list is a 'live-facade' of the real ones, so
the performance is good, and any modification to Group.getChildren()
will affect it.
Note: only Element-type children are returned. Depending on the mode, the searching is usually linear -- take O(n) to complete.
getElements
in interface Group
namespace
- the namespace URI if FIND_BY_PREFIX is not specified;
the namespace prefix if FIND_BY_PREFIX specified; null to ignorename
- the local name if FIND_BY_TAGNAME is not specified;
the tag name if FIND_BY_TAGNAME specified; null to ignoremode
- the search mode; zero or any combination of FIND_xxx.public final java.util.List<Element> getElements(java.lang.String tname)
Group
Unlike Element.getElementsByTagName(java.lang.String)
, this method only
returns child elements, excluding grand children and other descendants.
The returned list is a 'live-facade' of the real ones, so
the performance is good, and any modification to Group.getChildren()
will affect it.
Note: only Element-type children are returned. Also, we did some optimization for this method so its access time is nearly constant.
getElements
in interface Group
tname
- the tag name (i.e., Namespaceable.getName)public final java.lang.String getElementValue(java.lang.String namespace, java.lang.String name, int mode, boolean trim)
Group
getElementValue
in interface Group
namespace
- the namespace URI if FIND_BY_PREFIX is not specified;
the namespace prefix if FIND_BY_PREFIX specified; null to ignorename
- the local name if FIND_BY_TAGNAME is not specified;
the tag name if FIND_BY_TAGNAME specified; null to ignorepublic final java.lang.String getElementValue(java.lang.String tname, boolean trim)
Group
getElementValue
in interface Group
tname
- the tag name (i.e., Namespaceable.getName)public final int coalesce(boolean recursive)
Group
SAXBuilder.build will do the merging automatically.
public final org.w3c.dom.NodeList getChildNodes()
getChildNodes
in interface org.w3c.dom.Node
getChildNodes
in class AbstractItem
public final org.w3c.dom.Node getFirstChild()
getFirstChild
in interface org.w3c.dom.Node
getFirstChild
in class AbstractItem
public final org.w3c.dom.Node getLastChild()
getLastChild
in interface org.w3c.dom.Node
getLastChild
in class AbstractItem
public final boolean hasChildNodes()
hasChildNodes
in interface org.w3c.dom.Node
hasChildNodes
in class AbstractItem
public final org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild)
insertBefore
in interface org.w3c.dom.Node
insertBefore
in class AbstractItem
public final org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild)
replaceChild
in interface org.w3c.dom.Node
replaceChild
in class AbstractItem
public final org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild)
removeChild
in interface org.w3c.dom.Node
removeChild
in class AbstractItem
public final org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
appendChild
in interface org.w3c.dom.Node
appendChild
in class AbstractItem
public java.lang.Object clone()
AbstractItem
clone
in interface Item
clone
in class AbstractItem
Copyright © 2005-2011 Potix Corporation. All Rights Reserved.