Class HTMLDocumentImpl

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, org.w3c.dom.Document, org.w3c.dom.events.DocumentEvent, org.w3c.dom.events.EventTarget, org.w3c.dom.html.HTMLDocument, org.w3c.dom.Node, org.w3c.dom.NodeList, org.w3c.dom.ranges.DocumentRange, org.w3c.dom.traversal.DocumentTraversal

    public class HTMLDocumentImpl
    extends org.apache.xerces.dom.DocumentImpl
    implements org.w3c.dom.html.HTMLDocument
    Implements an HTML document. Provides access to the top level element in the document, its body and title.

    Several methods create new nodes of all basic types (comment, text, element, etc.). These methods create new nodes but do not place them in the document tree. The nodes may be placed in the document tree using Node.appendChild(org.w3c.dom.Node) or Node.insertBefore(org.w3c.dom.Node, org.w3c.dom.Node), or they may be placed in some other document tree.

    Note: <FRAMESET> documents are not supported at the moment, neither are direct document writing (open(), write(java.lang.String)) and HTTP attribute methods (getURL(), getCookie()).

    INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.
    Version:
    $Revision: 1029415 $ $Date: 2010-10-31 22:32:22 +0530 (Sun, 31 Oct 2010) $
    Author:
    Assaf Arkin
    See Also:
    HTMLDocument, Serialized Form
    • Field Summary

      • Fields inherited from class org.apache.xerces.dom.DocumentImpl

        eventListeners, iteratorReferenceQueue, iterators, mutationEvents, rangeReferenceQueue, ranges
      • Fields inherited from class org.apache.xerces.dom.CoreDocumentImpl

        actualEncoding, allowGrammarAccess, changes, docElement, docType, encoding, errorChecking, fDocumentURI, identifiers, standalone, userData, version, xmlVersionChanged
      • 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

        DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, ELEMENT_DEFINITION_NODE, FIRSTCHILD, flags, HASSTRING, ID, IGNORABLEWS, NORMALIZED, OWNED, ownerNode, READONLY, SPECIFIED, SYNCCHILDREN, SYNCDATA, TREE_POSITION_ANCESTOR, TREE_POSITION_DESCENDANT, TREE_POSITION_DISCONNECTED, TREE_POSITION_EQUIVALENT, TREE_POSITION_FOLLOWING, TREE_POSITION_PRECEDING, TREE_POSITION_SAME_NODE
      • 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean canRenameElements​(java.lang.String newNamespaceURI, java.lang.String newNodeName, org.apache.xerces.dom.ElementImpl el)  
      org.w3c.dom.Node cloneNode​(boolean deep)
      Deep-clone a document, including fixing ownerDoc for the cloned children.
      void close()  
      org.w3c.dom.Attr createAttribute​(java.lang.String name)
      Creates an Attribute 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.
      org.w3c.dom.Element createElementNS​(java.lang.String namespaceURI, java.lang.String qualifiedName)
      Introduced in DOM Level 2.
      org.w3c.dom.Element createElementNS​(java.lang.String namespaceURI, java.lang.String qualifiedName, java.lang.String localpart)
      Xerces-specific constructor.
      org.w3c.dom.html.HTMLCollection getAnchors()  
      org.w3c.dom.html.HTMLCollection getApplets()  
      org.w3c.dom.html.HTMLElement getBody()  
      java.lang.String getCookie()  
      org.w3c.dom.Element getDocumentElement()
      Convenience method, allowing direct access to the child node which is considered the root of the actual document content.
      java.lang.String getDomain()  
      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 getElementsByName​(java.lang.String elementName)  
      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.
      org.w3c.dom.html.HTMLCollection getForms()  
      org.w3c.dom.html.HTMLElement getHead()
      Obtains the <HEAD> element in the document, creating one if does not exist before.
      org.w3c.dom.html.HTMLCollection getImages()  
      org.w3c.dom.html.HTMLCollection getLinks()  
      java.lang.String getReferrer()  
      java.lang.String getTitle()  
      java.lang.String getURL()  
      void open()  
      void setBody​(org.w3c.dom.html.HTMLElement newBody)  
      void setCookie​(java.lang.String cookie)  
      void setTitle​(java.lang.String newTitle)  
      void write​(java.lang.String text)  
      void writeln​(java.lang.String text)  
      • Methods inherited from class org.apache.xerces.dom.DocumentImpl

        addEventListener, copyEventListeners, createEvent, createNodeIterator, createNodeIterator, createRange, createTreeWalker, createTreeWalker, dispatchAggregateEvents, dispatchAggregateEvents, dispatchEvent, dispatchEventToSubtree, dispatchingEventToSubtree, getEventListeners, getImplementation, removeEventListener, saveEnclosingAttr, setEventListeners
      • Methods inherited from class org.apache.xerces.dom.CoreDocumentImpl

        abort, adoptNode, callUserDataHandlers, changed, changes, checkDOMNSErr, checkNamespaceWF, checkQName, clearIdentifiers, clone, cloneNode, createAttributeNS, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createDocumentType, createElementDefinition, createEntity, createEntityReference, createNotation, createProcessingInstruction, createTextNode, getAsync, getBaseURI, getDoctype, getDocumentURI, getDomConfig, getEncoding, getErrorChecking, getFeature, getIdentifier, getIdentifiers, getInputEncoding, getNodeName, getNodeNumber, getNodeNumber, getNodeType, getOwnerDocument, getStandalone, getStrictErrorChecking, getTextContent, getUserData, getUserData, getUserDataRecord, getVersion, getXmlEncoding, getXmlStandalone, getXmlVersion, importNode, insertBefore, isKidOK, isValidQName, isXMLName, load, loadXML, normalizeDocument, putIdentifier, removeChild, removeIdentifier, renameNode, replaceChild, saveXML, setAsync, setDocumentURI, setEncoding, setErrorChecking, setInputEncoding, setStandalone, setStrictErrorChecking, setTextContent, setUserData, setUserData, setVersion, setXmlEncoding, setXmlStandalone, setXmlVersion, undeferChildren
      • Methods inherited from class org.apache.xerces.dom.ParentNode

        getChildNodes, getChildNodesUnoptimized, getFirstChild, getLastChild, getLength, hasChildNodes, isEqualNode, item, normalize, setOwnerDocument, 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, compareDocumentPosition, compareTreePosition, dispatchEvent, getAttributes, getContainer, getLocalName, getNamespaceURI, getNodeValue, getPrefix, getReadOnly, getUserData, getUserData, getUserDataRecord, hasAttributes, isDefaultNamespace, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, needsSyncChildren, removeEventListener, setNodeValue, setPrefix, setUserData, setUserData, synchronizeData, toString
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface org.w3c.dom.Document

        adoptNode, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createEntityReference, createProcessingInstruction, createTextNode, getDoctype, getDocumentURI, getDomConfig, getImplementation, getInputEncoding, getStrictErrorChecking, getXmlEncoding, getXmlStandalone, getXmlVersion, importNode, normalizeDocument, renameNode, setDocumentURI, setStrictErrorChecking, setXmlStandalone, setXmlVersion
      • Methods inherited from interface org.w3c.dom.Node

        appendChild, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, 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

      • HTMLDocumentImpl

        public HTMLDocumentImpl()
    • Method Detail

      • getDocumentElement

        public org.w3c.dom.Element getDocumentElement()
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Convenience method, allowing direct access to the child node which is considered the root of the actual document content. For HTML, where it is legal to have more than one Element at the top level of the document, we pick the one with the tagName "HTML". For XML there should be only one top-level (HTML not yet supported.)
        Specified by:
        getDocumentElement in interface org.w3c.dom.Document
        Overrides:
        getDocumentElement in class org.apache.xerces.dom.CoreDocumentImpl
      • getHead

        public org.w3c.dom.html.HTMLElement getHead()
        Obtains the <HEAD> element in the document, creating one if does not exist before. The <HEAD> element is the first element in the <HTML> in the document. The <HTML> element is obtained by calling getDocumentElement(). If the element does not exist, one is created.

        Called by getTitle(), setTitle(java.lang.String), getBody() and setBody(org.w3c.dom.html.HTMLElement) to assure the document has the <HEAD> element correctly placed.

        Returns:
        The <HEAD> element
      • getTitle

        public java.lang.String getTitle()
        Specified by:
        getTitle in interface org.w3c.dom.html.HTMLDocument
      • setTitle

        public void setTitle​(java.lang.String newTitle)
        Specified by:
        setTitle in interface org.w3c.dom.html.HTMLDocument
      • getBody

        public org.w3c.dom.html.HTMLElement getBody()
        Specified by:
        getBody in interface org.w3c.dom.html.HTMLDocument
      • setBody

        public void setBody​(org.w3c.dom.html.HTMLElement newBody)
        Specified by:
        setBody in interface org.w3c.dom.html.HTMLDocument
      • getElementById

        public org.w3c.dom.Element getElementById​(java.lang.String elementId)
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Introduced in DOM Level 2 Returns the Element whose ID is given by elementId. If no such element exists, returns null. Behavior is not defined if more than one element has this ID.

        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.

        Specified by:
        getElementById in interface org.w3c.dom.Document
        Overrides:
        getElementById in class org.apache.xerces.dom.CoreDocumentImpl
        See Also:
        CoreDocumentImpl.getIdentifier(java.lang.String)
      • getElementsByName

        public org.w3c.dom.NodeList getElementsByName​(java.lang.String elementName)
        Specified by:
        getElementsByName in interface org.w3c.dom.html.HTMLDocument
      • getElementsByTagName

        public final org.w3c.dom.NodeList getElementsByTagName​(java.lang.String tagName)
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Return a live collection of all descendent Elements (not just immediate children) having the specified tag name.
        Specified by:
        getElementsByTagName in interface org.w3c.dom.Document
        Overrides:
        getElementsByTagName in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        tagName - The type of Element we want to gather. "*" will be taken as a wildcard, meaning "all elements in the document."
        See Also:
        DeepNodeListImpl
      • getElementsByTagNameNS

        public final org.w3c.dom.NodeList getElementsByTagNameNS​(java.lang.String namespaceURI,
                                                                 java.lang.String localName)
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Introduced in DOM Level 2.

        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.

        Specified by:
        getElementsByTagNameNS in interface org.w3c.dom.Document
        Overrides:
        getElementsByTagNameNS in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        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.
        Returns:
        NodeList A new NodeList object containing all the matched Elements.
      • createElementNS

        public org.w3c.dom.Element createElementNS​(java.lang.String namespaceURI,
                                                   java.lang.String qualifiedName,
                                                   java.lang.String localpart)
                                            throws org.w3c.dom.DOMException
        Xerces-specific constructor. "localName" is passed in, so we don't need to create a new String for it.
        Overrides:
        createElementNS in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        namespaceURI - The namespace URI of the element to create.
        qualifiedName - The qualified name of the element type to instantiate.
        localpart - The local name of the element to instantiate.
        Returns:
        Element A new Element object with the following attributes:
        Throws:
        org.w3c.dom.DOMException - INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.
      • createElementNS

        public org.w3c.dom.Element createElementNS​(java.lang.String namespaceURI,
                                                   java.lang.String qualifiedName)
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Introduced in DOM Level 2.

        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].

        Specified by:
        createElementNS in interface org.w3c.dom.Document
        Overrides:
        createElementNS in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        namespaceURI - The namespace URI of the element to create.
        qualifiedName - The qualified name of the element type to instantiate.
        Returns:
        Element A new Element object with the following attributes:
      • createElement

        public org.w3c.dom.Element createElement​(java.lang.String tagName)
                                          throws org.w3c.dom.DOMException
        Description copied from class: org.apache.xerces.dom.CoreDocumentImpl
        Factory method; creates an Element having this Document as its OwnerDoc.
        Specified by:
        createElement in interface org.w3c.dom.Document
        Overrides:
        createElement in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        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.
        Throws:
        org.w3c.dom.DOMException
      • createAttribute

        public org.w3c.dom.Attr createAttribute​(java.lang.String name)
                                         throws org.w3c.dom.DOMException
        Creates an Attribute having this Document as its OwnerDoc. Overrides CoreDocumentImpl.createAttribute(java.lang.String) and returns and attribute whose name is lower case.
        Specified by:
        createAttribute in interface org.w3c.dom.Document
        Overrides:
        createAttribute in class org.apache.xerces.dom.CoreDocumentImpl
        Parameters:
        name - The name of the attribute
        Returns:
        An attribute whose name is all lower case
        Throws:
        DOMException(INVALID_NAME_ERR) - if the attribute name is not acceptable
        org.w3c.dom.DOMException
      • getReferrer

        public java.lang.String getReferrer()
        Specified by:
        getReferrer in interface org.w3c.dom.html.HTMLDocument
      • getDomain

        public java.lang.String getDomain()
        Specified by:
        getDomain in interface org.w3c.dom.html.HTMLDocument
      • getURL

        public java.lang.String getURL()
        Specified by:
        getURL in interface org.w3c.dom.html.HTMLDocument
      • getCookie

        public java.lang.String getCookie()
        Specified by:
        getCookie in interface org.w3c.dom.html.HTMLDocument
      • setCookie

        public void setCookie​(java.lang.String cookie)
        Specified by:
        setCookie in interface org.w3c.dom.html.HTMLDocument
      • getImages

        public org.w3c.dom.html.HTMLCollection getImages()
        Specified by:
        getImages in interface org.w3c.dom.html.HTMLDocument
      • getApplets

        public org.w3c.dom.html.HTMLCollection getApplets()
        Specified by:
        getApplets in interface org.w3c.dom.html.HTMLDocument
      • getLinks

        public org.w3c.dom.html.HTMLCollection getLinks()
        Specified by:
        getLinks in interface org.w3c.dom.html.HTMLDocument
      • getForms

        public org.w3c.dom.html.HTMLCollection getForms()
        Specified by:
        getForms in interface org.w3c.dom.html.HTMLDocument
      • getAnchors

        public org.w3c.dom.html.HTMLCollection getAnchors()
        Specified by:
        getAnchors in interface org.w3c.dom.html.HTMLDocument
      • open

        public void open()
        Specified by:
        open in interface org.w3c.dom.html.HTMLDocument
      • close

        public void close()
        Specified by:
        close in interface org.w3c.dom.html.HTMLDocument
      • write

        public void write​(java.lang.String text)
        Specified by:
        write in interface org.w3c.dom.html.HTMLDocument
      • writeln

        public void writeln​(java.lang.String text)
        Specified by:
        writeln in interface org.w3c.dom.html.HTMLDocument
      • cloneNode

        public org.w3c.dom.Node cloneNode​(boolean deep)
        Description copied from class: org.apache.xerces.dom.DocumentImpl
        Deep-clone a document, including fixing ownerDoc for the cloned children. Note that this requires bypassing the WRONG_DOCUMENT_ERR protection. I've chosen to implement it by calling importNode which is DOM Level 2.
        Specified by:
        cloneNode in interface org.w3c.dom.Node
        Overrides:
        cloneNode in class org.apache.xerces.dom.DocumentImpl
        Parameters:
        deep - boolean, iff true replicate children
        Returns:
        org.w3c.dom.Node
        See Also:
        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.
      • canRenameElements

        protected boolean canRenameElements​(java.lang.String newNamespaceURI,
                                            java.lang.String newNodeName,
                                            org.apache.xerces.dom.ElementImpl el)
        Overrides:
        canRenameElements in class org.apache.xerces.dom.CoreDocumentImpl