gnu.xml.dom

Class DomDocument

Implemented Interfaces:
Cloneable, Comparable, Document, DocumentEvent, DocumentTraversal, EventTarget, Node, NodeList, XPathEvaluator

public class DomDocument
extends DomNode
implements Document, DocumentTraversal, XPathEvaluator

"Document" and "DocumentTraversal" implementation.

Note that when this checks names for legality, it uses an approximation of the XML rules, not the real ones. Specifically, it uses Unicode rules, with sufficient tweaks to pass a majority of basic XML conformance tests. (The huge XML character tables are hairy to implement.)

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

DomDocument()
Constructs a Document node, associating it with an instance of the DomImpl class.
DomDocument(DOMImplementation impl)
Constructs a Document node, associating it with the specified implementation.

Method Summary

Node
adoptNode(Node source)
Node
appendChild(Node newChild)
DOM L1 Appends the specified node to this node's list of children, enforcing the constraints that there be only one root element and one document type child.
Attr
createAttribute(String name)
DOM L1 Returns a newly created attribute with the specified name.
Attr
createAttributeNS(String namespaceURI, String name)
DOM L2 Returns a newly created attribute with the specified name and namespace information.
CDATASection
createCDATASection(String value)
DOM L1 Returns a newly created CDATA section node with the specified value.
CDATASection
createCDATASection(char[] buf, int off, int len)
Returns a newly created CDATA section node with the specified value.
Comment
createComment(String value)
DOM L1 Returns a newly created comment node with the specified value.
DocumentFragment
createDocumentFragment()
DOM L1 Returns a newly created document fragment.
Element
createElement(String name)
DOM L1 Returns a newly created element with the specified name.
Element
createElementNS(String namespaceURI, String name)
DOM L2 Returns a newly created element with the specified name and namespace information.
EntityReference
createEntityReference(String name)
DOM L1 Returns a newly created reference to the specified entity.
XPathExpression
createExpression(String expression, XPathNSResolver resolver)
Creates a parsed XPath expression with resolved namespaces.
XPathNSResolver
createNSResolver(Node nodeResolver)
Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document.
NodeIterator
createNodeIterator(Node root, int whatToShow, NodeFilter filter, boolean expandEntities)
DOM L2 (Traversal) Returns a newly created node iterator.
ProcessingInstruction
createProcessingInstruction(String target, String data)
DOM L1 Returns a newly created processing instruction.
Text
createTextNode(String value)
DOM L1 Returns a newly created text node with the specified value.
Text
createTextNode(char[] buf, int off, int len)
Returns a newly created text node with the specified value.
TreeWalker
createTreeWalker(Node root, int whatToShow, NodeFilter filter, boolean expandEntities)
Object
evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result)
Evaluates an XPath expression string and returns a result of the specified type if possible.
String
getBaseURI()
The absolute base URI of this node or null if the implementation wasn't able to obtain an absolute URI.
DocumentType
getDoctype()
DOM L1 Returns the document's DocumentType, or null.
Element
getDocumentElement()
DOM L1 Returns the document's root element, or null.
String
getDocumentURI()
DOMConfiguration
getDomConfig()
Element
getElementById(String id)
DOM L1 (relocated in DOM L2) Returns the element with the specified "ID" attribute, or null.
DOMImplementation
getImplementation()
DOM L1 Returns the document's DOMImplementation.
String
getInputEncoding()
DOM L3
String
getNodeName()
DOM L1 Returns the constant "#document".
boolean
getStrictErrorChecking()
String
getXmlEncoding()
DOM L3
boolean
getXmlStandalone()
String
getXmlVersion()
Node
importNode(Node src, boolean deep)
DOM L2 Makes a copy of the specified node, with all nodes "owned" by this document and with children optionally copied.
Node
insertBefore(Node newChild, Node refChild)
DOM L1 Inserts the specified node in this node's list of children, enforcing the constraints that there be only one root element and one document type child.
boolean
isDefaultNamespace(String namespaceURI)
This method checks if the specified namespaceURI is the default namespace or not.
String
lookupNamespaceURI(String prefix)
Look up the namespace URI associated to the given prefix, starting from this node.
String
lookupPrefix(String namespaceURI)
Look up the prefix associated to the given namespace URI, starting from this node.
void
normalizeDocument()
Node
renameNode(Node n, String namespaceURI, String qualifiedName)
Node
replaceChild(Node newChild, Node refChild)
DOM L1 Replaces the specified node in this node's list of children, enforcing the constraints that there be only one root element and one document type child.
void
setBuilding(boolean flag)
Sets the building flag.
void
setCheckWellformedness(boolean flag)
Sets whether to check for document well-formedness.
void
setDocumentURI(String documentURI)
void
setInputEncoding(String inputEncoding)
void
setStrictErrorChecking(boolean strictErrorChecking)
void
setXmlEncoding(String encoding)
void
setXmlStandalone(boolean xmlStandalone)
void
setXmlVersion(String xmlVersion)
static void
verifyXmlName(String name)
Deprecated. This method is deprecated and may be removed in future versions of GNU JAXP

Methods inherited from class gnu.xml.dom.DomNode

addEventListener, appendChild, clone, cloneNode, compact, compareDocumentPosition, compareTo, createEvent, dispatchEvent, getAttributes, getBaseURI, getChildNodes, getElementsByTagName, getElementsByTagNameNS, getFeature, getFirstChild, getLastChild, getLength, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isReadonly, isSameNode, isSupported, item, lookupNamespaceURI, lookupPrefix, makeReadonly, nameAndTypeEquals, normalize, removeChild, removeEventListener, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData, toString, trimToSize

Constructor Details

DomDocument

public DomDocument()
Constructs a Document node, associating it with an instance of the DomImpl class.

Note that this constructor disables character checking. It is normally used when connecting a DOM to an XML parser, and duplicating such checks is undesirable. When used for purposes other than connecting to a parser, you should re-enable that checking.

See Also:
DomDocument


DomDocument

protected DomDocument(DOMImplementation impl)
Constructs a Document node, associating it with the specified implementation. This should only be used in conjunction with a specialized implementation; it will normally be called by that implementation.

See Also:
DomImpl, DomDocument

Method Details

adoptNode

public Node adoptNode(Node source)
Specified by:
adoptNode in interface Document


appendChild

public Node appendChild(Node newChild)
DOM L1 Appends the specified node to this node's list of children, enforcing the constraints that there be only one root element and one document type child.
Specified by:
appendChild in interface Node
Overrides:
appendChild in interface DomNode


createAttribute

public Attr createAttribute(String name)
DOM L1 Returns a newly created attribute with the specified name.
Specified by:
createAttribute in interface Document


createAttributeNS

public Attr createAttributeNS(String namespaceURI,
                              String name)
DOM L2 Returns a newly created attribute with the specified name and namespace information.
Specified by:
createAttributeNS in interface Document


createCDATASection

public CDATASection createCDATASection(String value)
DOM L1 Returns a newly created CDATA section node with the specified value.
Specified by:
createCDATASection in interface Document


createCDATASection

public CDATASection createCDATASection(char[] buf,
                                       int off,
                                       int len)
Returns a newly created CDATA section node with the specified value.


createComment

public Comment createComment(String value)
DOM L1 Returns a newly created comment node with the specified value.
Specified by:
createComment in interface Document


createDocumentFragment

public DocumentFragment createDocumentFragment()
DOM L1 Returns a newly created document fragment.
Specified by:
createDocumentFragment in interface Document


createElement

public Element createElement(String name)
DOM L1 Returns a newly created element with the specified name.
Specified by:
createElement in interface Document


createElementNS

public Element createElementNS(String namespaceURI,
                               String name)
DOM L2 Returns a newly created element with the specified name and namespace information.
Specified by:
createElementNS in interface Document


createEntityReference

public EntityReference createEntityReference(String name)
DOM L1 Returns a newly created reference to the specified entity. The caller should populate this with the appropriate children and then mark it as readonly.
Specified by:
createEntityReference in interface Document

See Also:
DomNode.makeReadonly()


createExpression

public XPathExpression createExpression(String expression,
                                        XPathNSResolver resolver)
            throws XPathException,
                   DOMException
Creates a parsed XPath expression with resolved namespaces. This is useful when an expression will be reused in an application since it makes it possible to compile the expression string into a more efficient internal form and preresolve all namespace prefixes which occur within the expression.
Specified by:
createExpression in interface XPathEvaluator

Parameters:
expression - The XPath expression string to be parsed.
resolver - The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.

Returns:
The compiled form of the XPath expression.

Throws:
XPathException - INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the XPathEvaluator.
DOMException - NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver.


createNSResolver

public XPathNSResolver createNSResolver(Node nodeResolver)
Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document. This adapter works like the DOM Level 3 method lookupNamespaceURI on nodes in resolving the namespaceURI from a given prefix using the current information available in the node's hierarchy at the time lookupNamespaceURI is called. also correctly resolving the implicit xml prefix.
Specified by:
createNSResolver in interface XPathEvaluator

Parameters:
nodeResolver - The node to be used as a context for namespace resolution.

Returns:
XPathNSResolver which resolves namespaces with respect to the definitions in scope for a specified node.


createNodeIterator

public NodeIterator createNodeIterator(Node root,
                                       int whatToShow,
                                       NodeFilter filter,
                                       boolean expandEntities)
DOM L2 (Traversal) Returns a newly created node iterator. Don't forget to detach this iterator when you're done using it!
Specified by:
createNodeIterator in interface DocumentTraversal

See Also:
DomIterator


createProcessingInstruction

public ProcessingInstruction createProcessingInstruction(String target,
                                                         String data)
DOM L1 Returns a newly created processing instruction.
Specified by:
createProcessingInstruction in interface Document


createTextNode

public Text createTextNode(String value)
DOM L1 Returns a newly created text node with the specified value.
Specified by:
createTextNode in interface Document


createTextNode

public Text createTextNode(char[] buf,
                           int off,
                           int len)
Returns a newly created text node with the specified value.


createTreeWalker

public TreeWalker createTreeWalker(Node root,
                                   int whatToShow,
                                   NodeFilter filter,
                                   boolean expandEntities)
Specified by:
createTreeWalker in interface DocumentTraversal


evaluate

public Object evaluate(String expression,
                       Node contextNode,
                       XPathNSResolver resolver,
                       short type,
                       Object result)
            throws XPathException,
                   DOMException
Evaluates an XPath expression string and returns a result of the specified type if possible.
Specified by:
evaluate in interface XPathEvaluator

Parameters:
expression - The XPath expression string to be parsed and evaluated.
contextNode - The context is context node for the evaluation of this XPath expression. If the XPathEvaluator was obtained by casting the Document then this must be owned by the same document and must be a Document, Element, Attribute, Text, CDATASection, Comment, ProcessingInstruction, or XPathNamespace node. If the context node is a Text or a CDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
resolver - The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.
type - If a specific type is specified, then the result will be returned as the corresponding type.For XPath 1.0 results, this must be one of the codes of the XPathResult interface.
result - The result specifies a specific result object which may be reused and returned by this method. If this is specified as nullor the implementation does not reuse the specified result, a new result object will be constructed and returned.For XPath 1.0 results, this object will be of type XPathResult.

Returns:
The result of the evaluation of the XPath expression.For XPath 1.0 results, this object will be of type XPathResult.

Throws:
XPathException - INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the XPathEvaluatori
TYPE_ERR: Raised if the result cannot be converted to return the specified type.
DOMException - NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver.
WRONG_DOCUMENT_ERR: The Node is from a document that is not supported by this XPathEvaluator.
NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the request type is not permitted by this XPathEvaluator.


getBaseURI

public String getBaseURI()
The absolute base URI of this node or null if the implementation wasn't able to obtain an absolute URI. This value is computed as described in . However, when the Document supports the feature "HTML" [DOM Level 2 HTML] , the base URI is computed using first the value of the href attribute of the HTML BASE element if any, and the value of the documentURI attribute from the Document interface otherwise.
Specified by:
getBaseURI in interface Node
Overrides:
getBaseURI in interface DomNode

Since:
DOM Level 3


getDoctype

public final DocumentType getDoctype()
DOM L1 Returns the document's DocumentType, or null.
Specified by:
getDoctype in interface Document


getDocumentElement

public final Element getDocumentElement()
DOM L1 Returns the document's root element, or null.
Specified by:
getDocumentElement in interface Document


getDocumentURI

public String getDocumentURI()
Specified by:
getDocumentURI in interface Document


getDomConfig

public DOMConfiguration getDomConfig()
Specified by:
getDomConfig in interface Document


getElementById

public Element getElementById(String id)
DOM L1 (relocated in DOM L2) Returns the element with the specified "ID" attribute, or null.

Returns null unless Consumer was used to populate internal DTD declaration information, using package-private APIs. If that internal DTD information is available, the document may be searched for the element with that ID.

Specified by:
getElementById in interface Document


getImplementation

public final DOMImplementation getImplementation()
DOM L1 Returns the document's DOMImplementation.
Specified by:
getImplementation in interface Document


getInputEncoding

public String getInputEncoding()
DOM L3
Specified by:
getInputEncoding in interface Document


getNodeName

public final String getNodeName()
DOM L1 Returns the constant "#document".
Specified by:
getNodeName in interface Node
Overrides:
getNodeName in interface DomNode


getStrictErrorChecking

public boolean getStrictErrorChecking()
Specified by:
getStrictErrorChecking in interface Document


getXmlEncoding

public String getXmlEncoding()
DOM L3
Specified by:
getXmlEncoding in interface Document


getXmlStandalone

public boolean getXmlStandalone()
Specified by:
getXmlStandalone in interface Document


getXmlVersion

public String getXmlVersion()
Specified by:
getXmlVersion in interface Document


importNode

public Node importNode(Node src,
                       boolean deep)
DOM L2 Makes a copy of the specified node, with all nodes "owned" by this document and with children optionally copied. This type of standard utility has become, well, a standard utility.

Note that EntityReference nodes created through this method (either directly, or recursively) never have children, and that there is no portable way to associate them with such children.

Note also that there is no requirement that the specified node be associated with a different document. This differs from the cloneNode operation in that the node itself is not given an opportunity to participate, so that any information managed by node subclasses will be lost.

Specified by:
importNode in interface Document


insertBefore

public Node insertBefore(Node newChild,
                         Node refChild)
DOM L1 Inserts the specified node in this node's list of children, enforcing the constraints that there be only one root element and one document type child.
Specified by:
insertBefore in interface Node
Overrides:
insertBefore in interface DomNode


isDefaultNamespace

public boolean isDefaultNamespace(String namespaceURI)
This method checks if the specified namespaceURI is the default namespace or not.
Specified by:
isDefaultNamespace in interface Node
Overrides:
isDefaultNamespace in interface DomNode

Parameters:
namespaceURI - The namespace URI to look for.

Returns:
Returns true if the specified namespaceURI is the default namespace, false otherwise.

Since:
DOM Level 3


lookupNamespaceURI

public String lookupNamespaceURI(String prefix)
Look up the namespace URI associated to the given prefix, starting from this node.
See for details on the algorithm used by this method.
Specified by:
lookupNamespaceURI in interface Node
Overrides:
lookupNamespaceURI in interface DomNode

Parameters:
prefix - The prefix to look for. If this parameter is null, the method will return the default namespace URI if any.

Returns:
Returns the associated namespace URI or null if none is found.

Since:
DOM Level 3


lookupPrefix

public String lookupPrefix(String namespaceURI)
Look up the prefix associated to the given namespace URI, starting from this node. The default namespace declarations are ignored by this method.
See for details on the algorithm used by this method.
Specified by:
lookupPrefix in interface Node
Overrides:
lookupPrefix in interface DomNode

Parameters:
namespaceURI - The namespace URI to look for.

Returns:
Returns an associated namespace prefix if found or null if none is found. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.

Since:
DOM Level 3


normalizeDocument

public void normalizeDocument()
Specified by:
normalizeDocument in interface Document


renameNode

public Node renameNode(Node n,
                       String namespaceURI,
                       String qualifiedName)
            throws DOMException
Specified by:
renameNode in interface Document


replaceChild

public Node replaceChild(Node newChild,
                         Node refChild)
DOM L1 Replaces the specified node in this node's list of children, enforcing the constraints that there be only one root element and one document type child.
Specified by:
replaceChild in interface Node
Overrides:
replaceChild in interface DomNode


setBuilding

public void setBuilding(boolean flag)
Sets the building flag. Mutation events in the document are not reported.


setCheckWellformedness

public void setCheckWellformedness(boolean flag)
Sets whether to check for document well-formedness. If true, an exception will be raised if a second doctype or root element node is added to the document.


setDocumentURI

public void setDocumentURI(String documentURI)
Specified by:
setDocumentURI in interface Document


setInputEncoding

public void setInputEncoding(String inputEncoding)


setStrictErrorChecking

public void setStrictErrorChecking(boolean strictErrorChecking)
Specified by:
setStrictErrorChecking in interface Document


setXmlEncoding

public void setXmlEncoding(String encoding)


setXmlStandalone

public void setXmlStandalone(boolean xmlStandalone)
Specified by:
setXmlStandalone in interface Document


setXmlVersion

public void setXmlVersion(String xmlVersion)
Specified by:
setXmlVersion in interface Document


verifyXmlName

public static void verifyXmlName(String name)

Deprecated. This method is deprecated and may be removed in future versions of GNU JAXP

Throws a DOM exception if the specified name is not a legal XML 1.0 Name.