El título es hijos y nietos, sin embargo, al hablar de "Parent" estas hablando de padres y abuelos... la ascendencia en lugar de la descendencia.
Bueno, después del trabalenguas, lo que debes mirar es la propiedad "HasChild" para saber si tienes hijos. Obtener el primero de ellos (GetFirstchild) y mediante un bucle realizar la misma tarea mientras el siguiente hermano (GetnextSibling ) sea distinto de nulo.
¿cómo quieres obtener los hijos y nietos, todos mezclados?
Porque un nodo puede tener dos hijos, y cada uno de ellos a su vez, pueden tener varios nietos del primero, obtener una lista "plana" quizás no sirva de nada.
El código es lo de menos. Lo importante es lo que tenía el programador en la cabeza cuando escribió el código
.
PD:
JXJ, tampoco hay que ser así, muchas veces se pone código y no pasa nada. El problema es "cuando te exigen que pongas el código"
Saludos