(3) Значит body тоже должно быть COMОбъект. Посмотрите в отладчике, что у этого body в свойстве all и что в childNodes. Я всегда через childNodes делал подобные переборы, хотя тут нужна рекурсия, так как структура иерархическая.
Закон Брукера: Даже маленькая практика стоит большой теории.