->pointer will actually give you the tree starting from where you have traversed to in the xml_smart object. It will be a hash which you can use like an ordinary hash.
You can traverse the object using the method described above and it will move the pointer.
|________________Pointer could be here.
Now when you ask for ->content() it will give you the content at node3 and if you ask for ->pointer it will give you the sub-tree starting from node3 in a hash.
Hope that helps - Let me know if you need further clarification.