final class DomElem extends CanBeDomDocumentChild with Elem with ScopedElemLike with HasParent
Wrapper around org.w3c.dom.Element
, conforming to the eu.cdevreeze.yaidom.queryapi.ElemLike API.
See the documentation of the mixed-in query API trait(s) for more details on the uniform query API offered by this class.
By design the only state of the DomElem is the wrapped element. Otherwise it would be easy to cause any inconsistency between this wrapper element and the wrapped element. The down-side is that computing the resolved name or resolved attributes is expensive, because on each call first the in-scope namespaces are computed (by following namespace declarations in the ancestry and in the element itself). This is done for reliable namespace support, independent of namespace-awareness of the underlying element's document.
This choice for reliable namespace support (see the documented properties of ScopedElemApi
) and defensive handling
of mutable state makes this DomElem slower (when querying for resolved names or attributes) than other wrapper
element implementations, such as ScalaXmlElem
. On the other hand, if the use of org.w3c.dom
is a given, then
this DomElem makes namespace-aware querying of DOM elements far easier than direct querying of DOM elements.
- Alphabetic
- By Inheritance
- DomElem
- HasParent
- HasParentApi
- ScopedElemLike
- ClarkElemLike
- HasText
- HasEName
- IsNavigable
- ElemLike
- Elem
- ScopedElemApi
- HasScopeApi
- HasQNameApi
- Elem
- HasChildNodesApi
- AnyElemNodeApi
- ClarkElemApi
- HasTextApi
- HasENameApi
- IsNavigableApi
- ElemApi
- AnyElemApi
- Elem
- CanBeDomDocumentChild
- CanBeDocumentChild
- CanBeDocumentChild
- CanBeDocumentChild
- DomNode
- Node
- Node
- Node
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new DomElem(wrappedNode: Element)
Type Members
- type DomType = Element
- type ThisElem = DomElem
The element type itself.
The element type itself. It must be restricted to a sub-type of the query API trait in question.
Concrete element classes will restrict this type to that element class itself.
- Definition Classes
- DomElem → HasParent → HasParentApi → ScopedElemLike → ClarkElemLike → IsNavigable → ElemLike → Elem → ScopedElemApi → Elem → HasChildNodesApi → ClarkElemApi → IsNavigableApi → ElemApi → AnyElemApi
- type ThisNode = DomNode
The node type, that is a super-type of the element type, but also of corresponding text node types etc.
The node type, that is a super-type of the element type, but also of corresponding text node types etc.
- Definition Classes
- DomElem → Elem → Elem → AnyElemNodeApi
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def \(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Shorthand for
filterChildElems(p)
. - final def \@(expandedName: EName): Option[String]
Shorthand for
attributeOption(expandedName)
.Shorthand for
attributeOption(expandedName)
.- Definition Classes
- HasEName → HasENameApi
- final def \\(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Shorthand for
filterElemsOrSelf(p)
. - final def \\!(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Shorthand for
findTopmostElemsOrSelf(p)
. - final def ancestors: IndexedSeq[ThisElem]
Returns
ancestorsOrSelf.drop(1)
Returns
ancestorsOrSelf.drop(1)
- Definition Classes
- HasParent → HasParentApi
- final def ancestorsOrSelf: IndexedSeq[ThisElem]
Returns all ancestor elements or self
Returns all ancestor elements or self
- Definition Classes
- HasParent → HasParentApi
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def attribute(expandedName: EName): String
Returns the value of the attribute with the given expanded name, and throws an exception otherwise.
Returns the value of the attribute with the given expanded name, and throws an exception otherwise.
- Definition Classes
- HasEName → HasENameApi
- final def attributeAsQName(expandedName: EName): QName
Returns the QName value of the attribute with the given expanded name, and throws an exception otherwise
Returns the QName value of the attribute with the given expanded name, and throws an exception otherwise
- Definition Classes
- ScopedElemLike → ScopedElemApi
- final def attributeAsQNameOption(expandedName: EName): Option[QName]
Returns the QName value of the attribute with the given expanded name, if any, wrapped in an
Option
.Returns the QName value of the attribute with the given expanded name, if any, wrapped in an
Option
. If the attribute exists, but its value is not a QName, an exception is thrown.- Definition Classes
- ScopedElemLike → ScopedElemApi
- final def attributeAsResolvedQName(expandedName: EName): EName
Returns the resolved QName value (as EName) of the attribute with the given expanded name, and throws an exception otherwise
Returns the resolved QName value (as EName) of the attribute with the given expanded name, and throws an exception otherwise
- Definition Classes
- ScopedElemLike → ScopedElemApi
- final def attributeAsResolvedQNameOption(expandedName: EName): Option[EName]
Returns the resolved QName value (as EName) of the attribute with the given expanded name, if any, wrapped in an
Option
.Returns the resolved QName value (as EName) of the attribute with the given expanded name, if any, wrapped in an
Option
. None is returned if the attribute does not exist. If the QName value cannot be resolved given the scope of the element, an exception is thrown.- Definition Classes
- ScopedElemLike → ScopedElemApi
- final def attributeOption(expandedName: EName): Option[String]
Returns the value of the attribute with the given expanded name, if any, wrapped in an
Option
.Returns the value of the attribute with the given expanded name, if any, wrapped in an
Option
.- Definition Classes
- HasEName → HasENameApi
- def attributeScope: Scope
The attribute
Scope
, which is the sameScope
but without the default namespace (which is not used for attributes) - def attributes: IndexedSeq[(QName, String)]
The attributes of the element as mapping from QNames to values
The attributes of the element as mapping from QNames to values
- Definition Classes
- DomElem → HasQNameApi
- def children: IndexedSeq[DomNode]
Returns all child nodes, of any kind of node (element node, text node etc.).
Returns all child nodes, of any kind of node (element node, text node etc.).
- Definition Classes
- DomElem → HasChildNodesApi
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws(classOf[java.lang.CloneNotSupportedException])
- def commentChildren: IndexedSeq[DomComment]
Returns the comment children
- def declarations: Declarations
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def equals(obj: Any): Boolean
- Definition Classes
- DomNode → AnyRef → Any
- final def filterChildElems(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Returns the child elements obeying the given predicate.
- final def filterElems(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Returns the descendant elements obeying the given predicate, in document order.
- final def filterElemsOrSelf(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Returns the descendant-or-self elements obeying the given predicate, in document order.
Returns the descendant-or-self elements obeying the given predicate, in document order. This method could be defined as:
def filterElemsOrSelf(p: ThisElem => Boolean): immutable.IndexedSeq[ThisElem] = Vector(this).filter(p) ++ (this.findAllChildElems flatMap (_.filterElemsOrSelf(p)))
It can be proven that the result is equivalent to
findAllElemsOrSelf filter p
. - def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def findAllChildElems: IndexedSeq[DomElem]
Returns the element children
- final def findAllChildElemsWithPathEntries: IndexedSeq[(ThisElem, Entry)]
Returns all child elements paired with their path entries.
Returns all child elements paired with their path entries.
This method is final, so more efficient implementations for sub-types are not supported. This implementation is only efficient if finding all child elements as well as computing their resolved names is efficient. That is not the case for DOM wrappers or Scala XML Elem wrappers (due to their expensive Scope computations). On the other hand, those wrapper element implementations are convenient, but not intended for heavy use in production. Hence, this method should typically be fast enough.
- Definition Classes
- ClarkElemLike → IsNavigable → IsNavigableApi
- final def findAllElems: IndexedSeq[ThisElem]
Returns all descendant elements (not including this element), in document order.
- final def findAllElemsOrSelf: IndexedSeq[ThisElem]
Returns this element followed by all descendant elements (that is, the descendant-or-self elements), in document order.
- final def findAncestor(p: (ThisElem) ⇒ Boolean): Option[ThisElem]
Returns the first found ancestor element obeying the given predicate, if any, wrapped in an Option
Returns the first found ancestor element obeying the given predicate, if any, wrapped in an Option
- Definition Classes
- HasParent → HasParentApi
- final def findAncestorOrSelf(p: (ThisElem) ⇒ Boolean): Option[ThisElem]
Returns the first found ancestor-or-self element obeying the given predicate, if any, wrapped in an Option
Returns the first found ancestor-or-self element obeying the given predicate, if any, wrapped in an Option
- Definition Classes
- HasParent → HasParentApi
- final def findAttributeByLocalName(localName: String): Option[String]
Returns the first found attribute value of an attribute with the given local name, if any, wrapped in an
Option
.Returns the first found attribute value of an attribute with the given local name, if any, wrapped in an
Option
. Because of differing namespaces, it is possible that more than one such attribute exists, although this is not often the case.- Definition Classes
- HasEName → HasENameApi
- final def findChildElem(p: (ThisElem) ⇒ Boolean): Option[ThisElem]
Returns the first found child element obeying the given predicate, if any, wrapped in an
Option
. - final def findChildElemByPathEntry(entry: Entry): Option[ThisElem]
Finds the child element with the given
Path.Entry
(where this element is the root), if any, wrapped in anOption
.Finds the child element with the given
Path.Entry
(where this element is the root), if any, wrapped in anOption
.This method is final, so more efficient implementations for sub-types are not supported. This implementation is only efficient if finding all child elements as well as computing their resolved names is efficient. That is not the case for DOM wrappers or Scala XML Elem wrappers (due to their expensive Scope computations). On the other hand, those wrapper element implementations are convenient, but not intended for heavy use in production. Hence, this method should typically be fast enough.
- Definition Classes
- ClarkElemLike → IsNavigable → IsNavigableApi
- final def findElem(p: (ThisElem) ⇒ Boolean): Option[ThisElem]
Returns the first found (topmost) descendant element obeying the given predicate, if any, wrapped in an
Option
. - final def findElemOrSelf(p: (ThisElem) ⇒ Boolean): Option[ThisElem]
Returns the first found (topmost) descendant-or-self element obeying the given predicate, if any, wrapped in an
Option
. - final def findElemOrSelfByPath(path: Path): Option[ThisElem]
Finds the element with the given
Path
(where this element is the root), if any, wrapped in anOption
.Finds the element with the given
Path
(where this element is the root), if any, wrapped in anOption
.That is, returns:
findReverseAncestryOrSelfByPath(path).map(_.last)
Note that for each non-empty Path, we have:
findElemOrSelfByPath(path) == findChildElemByPathEntry(path.firstEntry). flatMap(_.findElemOrSelfByPath(path.withoutFirstEntry))
- Definition Classes
- IsNavigable → IsNavigableApi
- final def findReverseAncestryOrSelfByPath(path: Path): Option[IndexedSeq[ThisElem]]
Finds the reversed ancestry-or-self of the element with the given
Path
(where this element is the root), wrapped in an Option.Finds the reversed ancestry-or-self of the element with the given
Path
(where this element is the root), wrapped in an Option. None is returned if no element can be found at the given Path.Hence, the resulting element collection, if any, starts with this element and ends with the element at the given Path, relative to this element.
This method comes in handy for (efficiently) computing base URIs, where the (reverse) ancestry-or-self is needed as input.
- Definition Classes
- IsNavigable → IsNavigableApi
- final def findTopmostElems(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Returns the descendant elements obeying the given predicate that have no ancestor obeying the predicate.
- final def findTopmostElemsOrSelf(p: (ThisElem) ⇒ Boolean): IndexedSeq[ThisElem]
Returns the descendant-or-self elements obeying the given predicate, such that no ancestor obeys the predicate.
Returns the descendant-or-self elements obeying the given predicate, such that no ancestor obeys the predicate. This method could be defined as:
def findTopmostElemsOrSelf(p: ThisElem => Boolean): immutable.IndexedSeq[ThisElem] = if (p(this)) Vector(this) else (this.findAllChildElems flatMap (_.findTopmostElemsOrSelf(p)))
- final def getChildElem(p: (ThisElem) ⇒ Boolean): ThisElem
Returns the single child element obeying the given predicate, and throws an exception otherwise.
- final def getChildElemByPathEntry(entry: Entry): ThisElem
Returns (the equivalent of)
findChildElemByPathEntry(entry).get
Returns (the equivalent of)
findChildElemByPathEntry(entry).get
- Definition Classes
- IsNavigable → IsNavigableApi
- final def getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def getElemOrSelfByPath(path: Path): ThisElem
Returns (the equivalent of)
findElemOrSelfByPath(path).get
Returns (the equivalent of)
findElemOrSelfByPath(path).get
- Definition Classes
- IsNavigable → IsNavigableApi
- final def getReverseAncestryOrSelfByPath(path: Path): IndexedSeq[ThisElem]
Returns (the equivalent of)
findReverseAncestryOrSelfByPath(path).get
Returns (the equivalent of)
findReverseAncestryOrSelfByPath(path).get
- Definition Classes
- IsNavigable → IsNavigableApi
- final def hashCode(): Int
- Definition Classes
- DomNode → AnyRef → Any
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def localName: String
The local name, that is, the local part of the EName
The local name, that is, the local part of the EName
- Definition Classes
- HasEName → HasENameApi
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def nodeKind: NodeKind
- final def normalizedText: String
Returns
XmlStringUtils.normalizeString(text)
.Returns
XmlStringUtils.normalizeString(text)
.- Definition Classes
- HasText → HasTextApi
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def parent: ThisElem
Returns the equivalent
parentOption.get
, throwing an exception if this is the root elementReturns the equivalent
parentOption.get
, throwing an exception if this is the root element- Definition Classes
- HasParent → HasParentApi
- def parentOption: Option[DomElem]
Returns the parent element, if any, wrapped in an Option
Returns the parent element, if any, wrapped in an Option
- Definition Classes
- DomElem → HasParentApi
- def qname: QName
The QName of the element
The QName of the element
- Definition Classes
- DomElem → HasQNameApi
- def resolvedAttributes: IndexedSeq[(EName, String)]
The attributes as an ordered mapping from
EName
s (instead ofQName
s) to values, obtained by resolving attributeQName
s against the attribute scopeThe attributes as an ordered mapping from
EName
s (instead ofQName
s) to values, obtained by resolving attributeQName
s against the attribute scope- Definition Classes
- DomElem → HasENameApi
- def resolvedName: EName
The EName of the element
The EName of the element
- Definition Classes
- DomElem → HasENameApi
- def scope: Scope
The Scope stored with the element
The Scope stored with the element
- Definition Classes
- DomElem → HasScopeApi
- final def synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
- def text: String
Returns the concatenation of the texts of text children, including whitespace and CData.
Returns the concatenation of the texts of text children, including whitespace and CData. Non-text children are ignored. If there are no text children, the empty string is returned.
- Definition Classes
- DomElem → HasTextApi
- final def textAsQName: QName
Returns
QName(text.trim)
Returns
QName(text.trim)
- Definition Classes
- ScopedElemLike → ScopedElemApi
- final def textAsResolvedQName: EName
Returns the equivalent of
scope.resolveQNameOption(textAsQName).get
Returns the equivalent of
scope.resolveQNameOption(textAsQName).get
- Definition Classes
- ScopedElemLike → ScopedElemApi
- def textChildren: IndexedSeq[DomText]
Returns the text children
- def thisElem: ThisElem
This element itself.
This element itself.
- Definition Classes
- DomElem → AnyElemApi
- final def toString(): String
- Definition Classes
- DomNode → AnyRef → Any
- final def trimmedText: String
Returns
text.trim
.Returns
text.trim
.- Definition Classes
- HasText → HasTextApi
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws(classOf[java.lang.InterruptedException])
- val wrappedNode: Element