ddn.data.xml.dom.traverse

DOM traversal helpers and range-based iteration utilities.

Types 8

An input range that walks a DOM subtree in pre-order (node, then children left-to-right).

Fields
private XmlNode[] _stack
Methods
bool empty() @property const @safe nothrow
XmlNode front() @property @safe nothrow
void popFront() @safe
PreorderRange save() @property @safe
Constructors
this(XmlNode root)Creates a pre-order traversal starting at `root`.

An input range that walks a DOM subtree in post-order (children, then node).

Fields
private Entry[] _stack
Methods
bool empty() @property const @safe nothrow
XmlNode front() @property @safe nothrow
void popFront() @safe
PostorderRange save() @property @safe
private void advance() @safe
Constructors
this(XmlNode root)Creates a post-order traversal starting at `root`.
Nested Templates
Entry

An input range that iterates over the ancestors of a node.

Fields
private XmlNode _current
Methods
bool empty() @property const @safe nothrow
XmlNode front() @property @safe nothrow
void popFront() @safe nothrow
AncestorsRange save() @property @safe
Constructors
this(XmlNode node)Creates an ancestor traversal starting from the parent of `node`.

An input range that iterates over the siblings that follow a node.

Fields
private XmlNode[] _siblings
private size_t _nextIndex
Methods
bool empty() @property const @safe nothrow
XmlNode front() @property @safe nothrow
void popFront() @safe nothrow
FollowingSiblingsRange save() @property @safe
Constructors
this(XmlNode node)Creates a following-siblings traversal starting after `node`.

An input range that iterates over the siblings that precede a node (in reverse order).

Fields
private XmlNode[] _siblings
private ptrdiff_t _nextIndex
Methods
bool empty() @property const @safe nothrow
XmlNode front() @property @safe nothrow
void popFront() @safe nothrow
PrecedingSiblingsRange save() @property @safe
Constructors
this(XmlNode node)Creates a preceding-siblings traversal starting before `node`.

An input range that filters children to yield only elements.

Fields
private XmlNode[] _children
private size_t _nextIndex
Methods
bool empty() @property const @safe nothrow
XmlElement front() @property @safe nothrow
void popFront() @safe
ElementsRange save() @property @safe
private void advance() @safe
Constructors
this(XmlParentNode parent)Creates an element-only range for `parent`.

An input range that filters children to yield only elements with a specific name.

Fields
private XmlNode[] _children
private size_t _nextIndex
private string _name
Methods
bool empty() @property const @safe nothrow
XmlElement front() @property @safe nothrow
void popFront() @safe
ElementsNamedRange save() @property @safe
private void advance() @safe
Constructors
this(XmlParentNode parent, string name)Creates a named-element range for `parent`.

An input range that walks the descendants of a node in pre-order (excluding the node itself).

Fields
private PreorderRange _range
Methods
bool empty() @property const @safe
XmlNode front() @property @safe
void popFront() @safe
DescendantsRange save() @property @safe
Constructors
this(XmlNode root)Creates a descendants range for `root`.

Functions 8

fnPreorderRange preorder(XmlNode root) @safeReturns a pre-order traversal range for `root`.
fnPostorderRange postorder(XmlNode root) @safeReturns a post-order traversal range for `root`.
fnAncestorsRange ancestors(XmlNode node) @safeReturns an ancestor traversal range for `node`.
fnFollowingSiblingsRange followingSiblings(XmlNode node) @safeReturns a range iterating over siblings following `node`.
fnPrecedingSiblingsRange precedingSiblings(XmlNode node) @safeReturns a range iterating over siblings preceding `node` (closest first).
fnElementsRange elements(XmlParentNode parent) @safeReturns a range iterating over only the element children of `parent`.
fnElementsNamedRange elementsNamed(XmlParentNode parent, string name) @safeReturns a range iterating over element children of `parent` with the given lexical name.
fnDescendantsRange descendants(XmlNode root) @safeReturns a range iterating over all descendants of `root` in pre-order.