Shorthand for filterChildElems(expandedName).
Shorthand for filterChildElems(p).
Shorthand for filterChildElems(p). Use this shorthand only if the predicate is a short expression.
Shorthand for attributeOption(expandedName)
Shorthand for filterElemsOrSelf(expandedName).
Shorthand for filterElemsOrSelf(p).
Shorthand for filterElemsOrSelf(p). Use this shorthand only if the predicate is a short expression.
Shorthand for findTopmostElemsOrSelf(expandedName).
Shorthand for findTopmostElemsOrSelf(p).
Shorthand for findTopmostElemsOrSelf(p). Use this shorthand only if the predicate is a short expression.
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, if any, wrapped in an Option.
The attributes of the element as mapping from QNames to values
Returns the child elements with the given expanded name
Returns the child elements obeying the given predicate.
Returns the child elements obeying the given predicate. This method could be defined as:
def filterChildElems(p: E => Boolean): immutable.IndexedSeq[E] = this.findAllChildElems.filter(p)
Returns the descendant elements with the given expanded name
Returns the descendant elements obeying the given predicate.
Returns the descendant elements obeying the given predicate. This method could be defined as:
this.findAllChildElems flatMap (_.filterElemsOrSelf(p))Returns the descendant-or-self elements that have the given expanded name
Returns the descendant-or-self elements obeying the given predicate.
Returns the descendant-or-self elements obeying the given predicate. This method could be defined as:
def filterElemsOrSelf(p: E => Boolean): immutable.IndexedSeq[E] = Vector(this).filter(p) ++ (this.findAllChildElems flatMap (_.filterElemsOrSelf(p)))
It can be proven that the result is equivalent to findAllElemsOrSelf filter p.
Returns all child elements, in the correct order.
Returns all child elements, in the correct order.
These child elements share the same rootElem with this element, but differ in the paths, which have one more "path entry".
Returns all descendant elements (not including this element).
Returns all descendant elements (not including this element). This method could be defined as filterElems { e => true }.
Equivalent to findAllElemsOrSelf.drop(1).
Returns this element followed by all descendant elements (that is, the descendant-or-self elements).
Returns this element followed by all descendant elements (that is, the descendant-or-self elements).
This method could be defined as filterElemsOrSelf { e => true }.
Returns the first found attribute value of an attribute with the given local name, if any, wrapped in an Option.
Returns the first found child element with the given expanded name, if any, wrapped in an Option
Returns the first found child element obeying the given predicate, if any, wrapped in an Option.
Returns the first found child element obeying the given predicate, if any, wrapped in an Option.
This method could be defined as filterChildElems(p).headOption.
Finds the child element with the given Path.Entry (where this element is the root), if any, wrapped in an Option.
Finds the child element with the given Path.Entry (where this element is the root), if any, wrapped in an Option.
Returns the first found (topmost) descendant element with the given expanded name, if any, wrapped in an Option
Returns the first found (topmost) descendant element obeying the given predicate, if any, wrapped in an Option.
Returns the first found (topmost) descendant element obeying the given predicate, if any, wrapped in an Option.
This method could be defined as filterElems(p).headOption.
Returns the first found (topmost) descendant-or-self element with the given expanded name, if any, wrapped in an Option
Returns the first found (topmost) descendant-or-self element obeying the given predicate, if any, wrapped in an Option.
Returns the first found (topmost) descendant-or-self element obeying the given predicate, if any, wrapped in an Option.
This method could be defined as filterElemsOrSelf(p).headOption.
Finds the element with the given Path (where this element is the root), if any, wrapped in an Option.
Finds the element with the given Path (where this element is the root), if any, wrapped in an Option.
This method must be very efficient, which depends on the efficiency of method findChildElemByPathEntry.
Returns the descendant elements with the given expanded name that have no ancestor with the same name
Returns the descendant elements obeying the given predicate that have no ancestor obeying the predicate.
Returns the descendant elements obeying the given predicate that have no ancestor obeying the predicate. This method could be defined as:
this.findAllChildElems flatMap (_.findTopmostElemsOrSelf(p))Returns the descendant-or-self elements with the given expanded name that have no ancestor with the same name
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: E => Boolean): immutable.IndexedSeq[E] = if (p(this)) Vector(this) else (this.findAllChildElems flatMap (_.findTopmostElemsOrSelf(p)))
Returns the single child element with the given expanded name, and throws an exception otherwise
Returns the single child element obeying the given predicate, and throws an exception otherwise.
Returns the single child element obeying the given predicate, and throws an exception otherwise.
This method could be defined as findChildElem(p).get.
Returns (the equivalent of) findChildElemByPathEntry(entry).get
Returns (the equivalent of) findChildElemByPathEntry(entry).get
Returns (the equivalent of) findElemOrSelfByPath(path).get
Returns (the equivalent of) findElemOrSelfByPath(path).get
The local name (or local part).
Returns the namespaces declared in this element.
Returns the namespaces declared in this element.
If the original parsed XML document contained duplicate namespace declarations (i.e. namespace declarations that are the same
as some namespace declarations in their context), these duplicate namespace declarations were lost during parsing of the
XML into an Elem tree. They therefore do not occur in the namespace declarations returned by this method.
Returns XmlStringUtils.normalizeString(text).
Returns XmlStringUtils.normalizeString(text).
The QName of the element
The attributes as a mapping from ENames (instead of QNames) to values.
The attributes as a mapping from ENames (instead of QNames) to values.
The implementation must ensure that resolvedAttributes.toMap.size == resolvedAttributes.size.
Namespace declarations are not considered attributes in yaidom, so are not included in the result.
Resolved name of the element, as EName
Returns this.elem.scope
Returns the concatenation of the texts of text children, including whitespace.
Returns text.trim.
Returns text.trim.
An element within its context. In other words, an element as a pair containing the root element (as eu.cdevreeze.yaidom.Elem) and a path (from that root element) to this element.
See the documentation of the mixed-in query API trait(s) for more details on the uniform query API offered by this class.
An
indexed.Elem(rootElem)can be seen as one immutable snapshot of an XML tree. All queries (using theElemApiuniform query API) on that snapshot return results within the same snapshot. Take care not to mix up query results from different snapshots. (This could have been modeled in an alternative design of the class, using a member type, but such a design has not been chosen.)Example
Below follows an example. This example queries for all book elements having at least Jeffrey Ullman as author. It can be written as follows, assuming a book store
Documentwith the appropriate structure:Note how we found an ancestor (Book) element of an Author element by first finding the appropriate ancestor path, and then querying the bookstore element for the element at that path. So we remembered the document element (as indexed element), and used that "snapshot" to navigate to elements at given ancestor paths of other elements. This is certainly more efficient than re-indexing (using an indexed element factory method).
Elem more formally
In order to get started using the class, this more formal section can safely be skipped. On the other hand, this section may provide a deeper understanding of the class.
Let
indexedRootElembe a root element, soindexedRootElem.path == Path.Root.Then, first of all, we have:
Given:
the following (rather obvious) properties hold for indexed elements:
Analogous remarks apply to the other query methods. For example, given:
we have: