По моему опыту вы должны просто использовать рекурсивный вызов функции.
Под этим я подразумеваю, что вы просто создаете функцию, которая делает все, что вам нужно, но имеет цикл while в конце функции, который проходит по дочерним элементам и снова вызывает функцию для каждого дочернего элемента. Таким образом, вы запускаете функцию для каждого потомка исходного объекта.