# Method Parser.XML.Tree.AbstractSimpleNode()->walk_preorder_2()

Method walk_preorder_2

  ``int` walk_preorder_2(`function`(`AbstractSimpleNode`, `mixed` ... :`int`|`void`) `cb_1`, `function`(`AbstractSimpleNode`, `mixed` ... :`int`|`void`) `cb_2`, `mixed` ... `args`)`

Description

  Traverse the node subtree in preorder, root node first, then subtrees from left to right. For each node we call `cb_1` before iterating through children, and then `cb_2` (which always gets called even if the walk is aborted earlier). If the callback function returns STOP_WALK the traverse decend is aborted and STOP_WALK is returned once all waiting `cb_2` functions have been called.