I know this is an old thread, but to understand in detail about external pointer I feel it is important to understand when it is used. This thread tells the difference between xmlParse and xmlTreeParse, when to use it, and how it works (pointer vs object).