Class TextImpl
- java.lang.Object
-
- org.htmlunit.cyberneko.xerces.dom.NodeImpl
-
- org.htmlunit.cyberneko.xerces.dom.ChildNode
-
- org.htmlunit.cyberneko.xerces.dom.CharacterDataImpl
-
- org.htmlunit.cyberneko.xerces.dom.TextImpl
-
- All Implemented Interfaces:
java.lang.Cloneable
,org.w3c.dom.CharacterData
,org.w3c.dom.events.EventTarget
,org.w3c.dom.Node
,org.w3c.dom.NodeList
,org.w3c.dom.Text
- Direct Known Subclasses:
CDATASectionImpl
public class TextImpl extends CharacterDataImpl implements org.w3c.dom.Text
Text nodes hold the non-markup, non-Entity content of an Element or Attribute.When a document is first made available to the DOM, there is only one Text object for each block of adjacent plain-text. Users (ie, applications) may create multiple adjacent Texts during editing -- see
Node.normalize()
for discussion.Note that CDATASection is a subclass of Text. This is conceptually valid, since they're really just two different ways of quoting characters when they're written out as part of an XML stream.
-
-
Field Summary
-
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.CharacterDataImpl
data_
-
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.ChildNode
nextSibling_, previousSibling_
-
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.NodeImpl
DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, FIRSTCHILD, HASSTRING, ID, NORMALIZED, OWNED, ownerNode_, READONLY, SPECIFIED, SYNCCHILDREN
-
Fields inherited from interface org.w3c.dom.Node
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
-
-
Constructor Summary
Constructors Constructor Description TextImpl(CoreDocumentImpl ownerDoc, java.lang.String data)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
canModifyNext(org.w3c.dom.Node node)
If any EntityReference to be removed has descendants that are not EntityReference, Text, or CDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR.private boolean
canModifyPrev(org.w3c.dom.Node node)
If any EntityReference to be removed has descendants that are not EntityReference, Text, or CDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR.java.lang.String
getNodeName()
the name of this node.short
getNodeType()
A short integer indicating what type of node this is.java.lang.String
getWholeText()
DOM Level 3 WD - Experimental.private boolean
getWholeTextBackward(org.w3c.dom.Node node, java.lang.StringBuilder builder, org.w3c.dom.Node parent)
Concatenates the text of all logically-adjacent text nodes to the left of the nodeprivate boolean
getWholeTextForward(org.w3c.dom.Node node, java.lang.StringBuilder builder, org.w3c.dom.Node parent)
Concatenates the text of all logically-adjacent text nodes to the right of this nodeprivate boolean
hasTextOnlyChildren(org.w3c.dom.Node node)
Check if an EntityReference node has Text Only child nodesprotected void
insertTextContent(java.lang.StringBuilder builder)
internal method taking a StringBuffer in parameter and inserts the text content at the start of the bufferboolean
isElementContentWhitespace()
DOM L3 Core CR - Experimentaljava.lang.String
removeData()
void
replaceData(java.lang.String value)
org.w3c.dom.Text
replaceWholeText(java.lang.String content)
Replaces the text of the current node and all logically-adjacent text nodes with the specified text.org.w3c.dom.Text
splitText(int offset)
Break a text node into two sibling nodes.-
Methods inherited from class org.htmlunit.cyberneko.xerces.dom.CharacterDataImpl
appendData, deleteData, getChildNodes, getData, getLength, getNodeValue, insertData, internalDeleteData, internalInsertData, replaceData, setData, setNodeValue, setNodeValueInternal, setNodeValueInternal, substringData
-
Methods inherited from class org.htmlunit.cyberneko.xerces.dom.ChildNode
cloneNode, getNextSibling, getParentNode, getPreviousSibling, parentNode, previousSibling
-
Methods inherited from class org.htmlunit.cyberneko.xerces.dom.NodeImpl
addEventListener, appendChild, changed, changes, compareDocumentPosition, dispatchEvent, getAttributes, getBaseURI, getElementAncestor, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNodeNumber, getOwnerDocument, getPrefix, getTextContent, getTextContent, getUserData, hasAttributes, hasChildNodes, hasStringValue, hasStringValue, insertBefore, isDefaultNamespace, isEqualNode, isFirstChild, isFirstChild, isIdAttribute, isIdAttribute, isNormalized, isNormalized, isOwned, isOwned, isSameNode, isSpecified, isSpecified, isSupported, item, lookupNamespacePrefix, lookupNamespaceURI, lookupPrefix, needsSyncChildren, needsSyncChildren, normalize, ownerDocument, removeChild, removeEventListener, replaceChild, setOwnerDocument, setPrefix, setTextContent, setUserData, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.w3c.dom.CharacterData
appendData, deleteData, getData, getLength, insertData, replaceData, setData, substringData
-
Methods inherited from interface org.w3c.dom.Node
appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
-
-
-
-
Constructor Detail
-
TextImpl
public TextImpl(CoreDocumentImpl ownerDoc, java.lang.String data)
-
-
Method Detail
-
getNodeType
public short getNodeType()
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. 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.- Specified by:
getNodeType
in interfaceorg.w3c.dom.Node
- Specified by:
getNodeType
in classNodeImpl
-
getNodeName
public java.lang.String getNodeName()
the name of this node.- Specified by:
getNodeName
in interfaceorg.w3c.dom.Node
- Specified by:
getNodeName
in classNodeImpl
-
isElementContentWhitespace
public boolean isElementContentWhitespace()
DOM L3 Core CR - ExperimentalReturns whether this text node contains element content whitespace, often abusively called "ignorable whitespace". The text node is determined to contain whitespace in element content during the load of the document or if validation occurs while using
Document.normalizeDocument()
.- Specified by:
isElementContentWhitespace
in interfaceorg.w3c.dom.Text
-
getWholeText
public java.lang.String getWholeText()
DOM Level 3 WD - Experimental. Returns all text ofText
nodes logically-adjacent text nodes to this node, concatenated in document order.- Specified by:
getWholeText
in interfaceorg.w3c.dom.Text
-
insertTextContent
protected void insertTextContent(java.lang.StringBuilder builder) throws org.w3c.dom.DOMException
internal method taking a StringBuffer in parameter and inserts the text content at the start of the buffer- Parameters:
builder
- string buffer- Throws:
org.w3c.dom.DOMException
- on error
-
getWholeTextForward
private boolean getWholeTextForward(org.w3c.dom.Node node, java.lang.StringBuilder builder, org.w3c.dom.Node parent)
Concatenates the text of all logically-adjacent text nodes to the right of this node- Parameters:
node
- the nodebuilder
- theStringBuilder
parent
- the parent- Returns:
- true - if execution was stopped because the type of node other than EntityRef, Text, CDATA is encountered, otherwise return false
-
getWholeTextBackward
private boolean getWholeTextBackward(org.w3c.dom.Node node, java.lang.StringBuilder builder, org.w3c.dom.Node parent)
Concatenates the text of all logically-adjacent text nodes to the left of the node- Parameters:
node
- the nodebuilder
- theStringBuilder
parent
- the parent- Returns:
- true - if execution was stopped because the type of node other than EntityRef, Text, CDATA is encountered, otherwise return false
-
replaceWholeText
public org.w3c.dom.Text replaceWholeText(java.lang.String content) throws org.w3c.dom.DOMException
Replaces the text of the current node and all logically-adjacent text nodes with the specified text. All logically-adjacent text nodes are removed including the current node unless it was the recipient of the replacement text.- Specified by:
replaceWholeText
in interfaceorg.w3c.dom.Text
- Parameters:
content
- The content of the replacing Text node.- Returns:
- text - The Text node created with the specified content.
- Throws:
org.w3c.dom.DOMException
-
canModifyPrev
private boolean canModifyPrev(org.w3c.dom.Node node)
If any EntityReference to be removed has descendants that are not EntityReference, Text, or CDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. Traverse previous siblings of the node to be replaced. If a previous sibling is an EntityReference node, get it's last child. If the last child was a Text or CDATASection node and its previous siblings are neither a replaceable EntityReference or Text or CDATASection nodes, return false. IF the last child was neither Text nor CDATASection nor a replaceable EntityReference Node, then return true. If the last child was a Text or CDATASection node any its previous sibling was not or was an EntityReference that did not contain only Text or CDATASection nodes, return false. Check this recursively for EntityReference nodes.- Parameters:
node
- the node- Returns:
- true - can replace text false - can't replace exception must be raised
-
canModifyNext
private boolean canModifyNext(org.w3c.dom.Node node)
If any EntityReference to be removed has descendants that are not EntityReference, Text, or CDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. Traverse previous siblings of the node to be replaced. If a previous sibling is an EntityReference node, get it's last child. If the first child was a Text or CDATASection node and its next siblings are neither a replaceable EntityReference or Text or CDATASection nodes, return false. IF the first child was neither Text nor CDATASection nor a replaceable EntityReference Node, then return true. If the first child was a Text or CDATASection node any its next sibling was not or was an EntityReference that did not contain only Text or CDATASection nodes, return false. Check this recursively for EntityReference nodes.- Parameters:
node
- the node- Returns:
- true - can replace text false - can't replace exception must be raised
-
hasTextOnlyChildren
private boolean hasTextOnlyChildren(org.w3c.dom.Node node)
Check if an EntityReference node has Text Only child nodes- Parameters:
node
- the node- Returns:
- true - Contains text only children
-
splitText
public org.w3c.dom.Text splitText(int offset) throws org.w3c.dom.DOMException
Break a text node into two sibling nodes. (Note that if the current node has no parent, they won't wind up as "siblings" -- they'll both be orphans.)- Specified by:
splitText
in interfaceorg.w3c.dom.Text
- Parameters:
offset
- The offset at which to split. If offset is at the end of the available data, the second node will be empty.- Returns:
- A reference to the new node (containing data after the offset point). The original node will contain data up to that point.
- Throws:
org.w3c.dom.DOMException
- INDEX_SIZE_ERR if offset is < 0 or > length.org.w3c.dom.DOMException
- NO_MODIFICATION_ALLOWED_ERR if node is read-only.
-
replaceData
public void replaceData(java.lang.String value)
-
removeData
public java.lang.String removeData()
-
-