public class Document extends java.lang.Object implements Parent
DocType
and other document-level information.Modifier and Type | Field and Description |
---|---|
protected java.lang.String |
baseURI
See http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/core.html#baseURIs-Considerations
|
Constructor and Description |
---|
Document()
Creates a new empty document.
|
Document(Element rootElement)
|
Document(Element rootElement,
DocType docType)
|
Document(Element rootElement,
DocType docType,
java.lang.String baseURI)
|
Document(java.util.List<? extends Content> content)
This will create a new
Document ,
with the supplied list of content, and a
declaration only if the content
contains a DocType instance. |
Modifier and Type | Method and Description |
---|---|
Document |
addContent(java.util.Collection<? extends Content> c)
Appends all children in the given collection to the end of
the content list.
|
Document |
addContent(Content child)
Appends the child to the end of the content list.
|
Document |
addContent(int index,
java.util.Collection<? extends Content> c)
Inserts the content in a collection into the content list
at the given index.
|
Document |
addContent(int index,
Content child)
Inserts the child into the content list at the given index.
|
void |
canContainContent(Content child,
int index,
boolean replace)
Test whether this Parent instance can contain the specified content
at the specified position.
|
Document |
clone()
This will return a deep clone of this
Document . |
java.util.List<Content> |
cloneContent()
Returns a list containing detached clones of this parent's content list.
|
Element |
detachRootElement()
Detach the root
from this document. |
boolean |
equals(java.lang.Object ob)
This tests for equality of this
Document to the supplied
Object . |
java.lang.String |
getBaseURI()
Returns the URI from which this document was loaded,
or null if this is not known.
|
java.util.List<Content> |
getContent()
This will return all content for the
Document . |
<F extends Content> |
getContent(Filter<F> filter)
Return a filtered view of this
Document 's content. |
Content |
getContent(int index)
Returns the child at the given index.
|
int |
getContentSize()
Returns the number of children in this parent's content list.
|
IteratorIterable<Content> |
getDescendants()
Returns an iterator that walks over all descendants in document order.
|
<F extends Content> |
getDescendants(Filter<F> filter)
Returns an iterator that walks over all descendants in document order
applying the Filter to return only elements that match the filter rule.
|
DocType |
getDocType()
|
Document |
getDocument()
Always returns this Document Instance
|
java.util.List<Namespace> |
getNamespacesInherited()
Obtain a list of all namespaces that are in scope for this content, but
were not introduced by this content.
|
java.util.List<Namespace> |
getNamespacesInScope()
Get the Namespaces that are in-scope on this Document.
|
java.util.List<Namespace> |
getNamespacesIntroduced()
Obtain a list of all namespaces that are introduced to the XML tree by
this node.
|
Parent |
getParent()
Always returns null, Document cannot have a parent.
|
java.lang.Object |
getProperty(java.lang.String id)
Returns the object associated with this document under the given "id"
string, or null if there is no binding or if the binding explicitly
stored a null value.
|
Element |
getRootElement()
This will return the root
Element
for this Document |
int |
hashCode()
This returns the hash code for this
Document . |
boolean |
hasRootElement()
This will return
true if this document has a
root element, false otherwise. |
int |
indexOf(Content child)
Returns the index of the supplied child in the content list,
or -1 if not a child of this parent.
|
java.util.List<Content> |
removeContent()
Removes all child content from this parent.
|
boolean |
removeContent(Content child)
Removes a single child node from the content list.
|
<F extends Content> |
removeContent(Filter<F> filter)
Remove all child content from this parent matching the supplied filter.
|
Content |
removeContent(int index)
Removes and returns the child at the given
index, or returns null if there's no such child.
|
void |
setBaseURI(java.lang.String uri)
Sets the effective URI from which this document was loaded,
and against which relative URLs in this document will be resolved.
|
Document |
setContent(java.util.Collection<? extends Content> newContent)
This sets the content of the
Document . |
Document |
setContent(Content child)
Set this document's content to be the supplied child.
|
Document |
setContent(int index,
java.util.Collection<? extends Content> collection)
Replace the child at the given index with the supplied
collection.
|
Document |
setContent(int index,
Content child)
Replace the current child the given index with the supplied child.
|
Document |
setDocType(DocType docType)
This will set the
declaration for this Document . |
void |
setProperty(java.lang.String id,
java.lang.Object value)
Assigns an arbitrary object to be associated with this document under
the given "id" string.
|
Document |
setRootElement(Element rootElement)
This sets the root
for the
Document . |
java.lang.String |
toString()
This returns a
String representation of the
Document , suitable for debugging. |
protected java.lang.String baseURI
public Document()
public Document(Element rootElement, DocType docType, java.lang.String baseURI)
Document
,
with the supplied Element
as the root element, the supplied
DocType
declaration, and the specified
base URI.rootElement
- Element
for document root.docType
- DocType
declaration.baseURI
- the URI from which this document was loaded.IllegalAddException
- if the given docType object
is already attached to a document or the given
rootElement already has a parentpublic Document(Element rootElement, DocType docType)
Document
,
with the supplied Element
as the root element and the supplied
DocType
declaration.rootElement
- Element
for document root.docType
- DocType
declaration.IllegalAddException
- if the given DocType object
is already attached to a document or the given
rootElement already has a parentpublic Document(Element rootElement)
Document
,
with the supplied Element
as the root element, and no DocType
declaration.rootElement
- Element
for document rootIllegalAddException
- if the given rootElement already has
a parent.public Document(java.util.List<? extends Content> content)
Document
,
with the supplied list of content, and a
DocType
declaration only if the content
contains a DocType instance. A null list is treated the
same as the no-arg constructor.content
- List
of starter contentIllegalAddException
- if the List contains more than
one Element or objects of illegal types.public int getContentSize()
Parent
Content
type.getContentSize
in interface Parent
public int indexOf(Content child)
Parent
public boolean hasRootElement()
true
if this document has a
root element, false
otherwise.true
if this document has a root element,
false
otherwise.public Element getRootElement()
Element
for this Document
Element
- the document's root elementjava.lang.IllegalStateException
- if the root element hasn't been setpublic Document setRootElement(Element rootElement)
Element
for the
Document
. If the document already has a root
element, it is replaced.rootElement
- Element
to be new root.Document
- modified Document.IllegalAddException
- if the given rootElement already has
a parent.public Element detachRootElement()
Element
from this document.Element
public DocType getDocType()
DocType
- the DOCTYPE declaration.public Document setDocType(DocType docType)
DocType
declaration for this Document
. Note
that a DocType can only be attached to one Document.
Attempting to set the DocType to a DocType object
that already belongs to a Document will result in an
IllegalAddException being thrown.docType
- DocType
declaration.IllegalAddException
- if the given docType is
already attached to a Document.public Document addContent(Content child)
addContent
in interface Parent
child
- child to append to end of content listIllegalAddException
- if the given child already has a parent.public Document addContent(java.util.Collection<? extends Content> c)
addContent
in interface Parent
c
- collection to appendIllegalAddException
- if any item in the collection
already has a parent or is of an illegal type.public Document addContent(int index, Content child)
addContent
in interface Parent
index
- location for adding the collectionchild
- child to insertjava.lang.IndexOutOfBoundsException
- if index is negative or beyond
the current number of childrenIllegalAddException
- if the given child already has a parent.public Document addContent(int index, java.util.Collection<? extends Content> c)
addContent
in interface Parent
index
- location for adding the collectionc
- collection to insertjava.lang.IndexOutOfBoundsException
- if index is negative or beyond
the current number of childrenIllegalAddException
- if any item in the collection
already has a parent or is of an illegal type.public java.util.List<Content> cloneContent()
Parent
cloneContent
in interface Parent
public Content getContent(int index)
Parent
getContent
in interface Parent
index
- location of desired childpublic java.util.List<Content> getContent()
Document
.
The returned list is "live" in document order and changes to it
affect the document's actual content.
Sequential traversal through the List is best done with a Iterator since the underlying implement of List.size() may require walking the entire list.
getContent
in interface Parent
List
- all Document contentjava.lang.IllegalStateException
- if the root element hasn't been setpublic <F extends Content> java.util.List<F> getContent(Filter<F> filter)
Document
's content.
Sequential traversal through the List is best done with a Iterator since the underlying implement of List.size() may require walking the entire list.
getContent
in interface Parent
F
- The Generic type of the returned content (the Filter's type)filter
- Filter
to apply
Note that the Filters
class has a number of predefined, useful
filters.List
- filtered Document contentjava.lang.IllegalStateException
- if the root element hasn't been setpublic java.util.List<Content> removeContent()
removeContent
in interface Parent
public <F extends Content> java.util.List<F> removeContent(Filter<F> filter)
removeContent
in interface Parent
F
- The Generic type of the content to remove.filter
- filter to select which content to remove
Note that the Filters
class has a number of predefined, useful
filters.public Document setContent(java.util.Collection<? extends Content> newContent)
Document
. The supplied
List should contain only objects of type Element
,
Comment
, and ProcessingInstruction
.
When all objects in the supplied List are legal and before the new
content is added, all objects in the old content will have their
parentage set to null (no parent) and the old content list will be
cleared. This has the effect that any active list (previously obtained
with a call to getContent(int)
) will also
change to reflect the new content. In addition, all objects in the
supplied List will have their parentage set to this document, but the
List itself will not be "live" and further removals and additions will
have no effect on this document content. If the user wants to continue
working with a "live" list, then a call to setContent should be
followed by a call to getContent(int)
to
obtain a "live" version of the content.
Passing a null or empty List clears the existing content.
In event of an exception the original content will be unchanged and the objects in the supplied content will be unaltered.
newContent
- List
of content to setIllegalAddException
- if the List contains objects of
illegal types or with existing parentage.public final void setBaseURI(java.lang.String uri)
Sets the effective URI from which this document was loaded, and against which relative URLs in this document will be resolved.
uri
- the base URI of this documentpublic final java.lang.String getBaseURI()
Returns the URI from which this document was loaded, or null if this is not known.
public Document setContent(int index, Content child)
In event of an exception the original content will be unchanged and the supplied child will be unaltered.
index
- - index of child to replace.child
- - child to add.IllegalAddException
- if the supplied child is already attached
or not legal content for this parent.java.lang.IndexOutOfBoundsException
- if index is negative or greater
than the current number of children.public Document setContent(int index, java.util.Collection<? extends Content> collection)
In event of an exception the original content will be unchanged and the content in the supplied collection will be unaltered.
index
- - index of child to replace.collection
- - collection of content to add.IllegalAddException
- if the collection contains objects of
illegal types.java.lang.IndexOutOfBoundsException
- if index is negative or greater
than the current number of children.public boolean removeContent(Content child)
Parent
removeContent
in interface Parent
child
- child to removepublic Content removeContent(int index)
Parent
removeContent
in interface Parent
index
- index of child to removepublic Document setContent(Content child)
If the supplied child is legal content for a Document and before it is added, all content in the current content list will be cleared and all current children will have their parentage set to null.
This has the effect that any active list (previously obtained with
a call to one of the getContent(int)
methods will also change
to reflect the new content. In addition, all content in the supplied
collection will have their parentage set to this Document. If the user
wants to continue working with a "live" list of this Document's
child, then a call to setContent should be followed by a call to one
of the getContent(int)
methods to obtain a "live"
version of the children.
Passing a null child clears the existing content.
In event of an exception the original content will be unchanged and the supplied child will be unaltered.
child
- new content to replace existing contentIllegalAddException
- if the supplied child is already attached
or not legal content for this parentpublic java.lang.String toString()
String
representation of the
Document
, suitable for debugging. If the XML
representation of the Document
is desired,
XMLOutputter.outputString(Document)
should be used.toString
in class java.lang.Object
String
- information about the
Document
public final boolean equals(java.lang.Object ob)
Document
to the supplied
Object
.equals
in class java.lang.Object
ob
- Object
to compare toboolean
whether the Document
is
equal to the supplied Object
public final int hashCode()
Document
.hashCode
in class java.lang.Object
int
hash codepublic Document clone()
Document
.public IteratorIterable<Content> getDescendants()
getDescendants
in interface Parent
public <F extends Content> IteratorIterable<F> getDescendants(Filter<F> filter)
getDescendants
in interface Parent
F
- The generic type of the returned descendant datafilter
- filter to select which descendants to see
Note that the Filters
class has a number of predefined, useful
filters.public Parent getParent()
public Document getDocument()
getDocument
in interface Parent
public void setProperty(java.lang.String id, java.lang.Object value)
id
- the id of the stored Object
value
- the Object
to storepublic java.lang.Object getProperty(java.lang.String id)
id
- the id of the stored Object
to returnObject
associated with the given idpublic void canContainContent(Content child, int index, boolean replace)
Parent
canContainContent
in interface Parent
child
- The content to be checkedindex
- The location where the content would be put.replace
- true if the intention is to replace the content already at
the index.public java.util.List<Namespace> getNamespacesInScope()
Document always has exactly two Namespaces in-scope:
Namespace.NO_NAMESPACE
and Namespace.XML_NAMESPACE
.
These namespaces are always introduced by the Document, and thus they are
both returned by getNamespacesIntroduced()
, and additionally
getNamespacesInherited()
will always be empty.
Description copied from
NamespaceAware.getNamespacesInScope()
:
Obtain a list of all namespaces that are in scope for the current content.
The contents of this list will always be the combination of getNamespacesIntroduced() and getNamespacesInherited().
See NamespaceAware
documentation for details on what the order of the
Namespaces will be in the returned list.
getNamespacesInScope
in interface NamespaceAware
public java.util.List<Namespace> getNamespacesIntroduced()
NamespaceAware
The contents of this list will always be a subset (but in the same order) of getNamespacesInScope(), and will never intersect getNamspacesInherited()
getNamespacesIntroduced
in interface NamespaceAware
public java.util.List<Namespace> getNamespacesInherited()
NamespaceAware
The contents of this list will always be a subset (but in the same order) of getNamespacesInScope(), and will never intersect getNamspacesIntroduced()
getNamespacesInherited
in interface NamespaceAware
Copyright © 2021 Jason Hunter, Brett McLaughlin. All Rights Reserved.