From the help

https://docs.dataaccess.com/dataflex...OMDocument.htm

When you no longer need the node object it should be destroyed. This is done by sending the message Destroy to the object. This is extremely important. Any time an object handle is returned from an XML message, you have created a new object. It is your responsibility to destroy it when you no longer need it. If you forget to destroy an object it will be properly destroyed when you destroy its parent. Since all objects reside within an Xml document object, destroying the document object will properly dispose of child objects. However, this is considered bad technique.
I've just done a very quick test creating an XML document, adding elements and then only destroying some of them

Using Object_id() in the watch window if the passed handle is after a destroy of that handle it returns 0
Using Object_id() in the watch window if the passed handle is after a destroy of a parent handle it still returns the 'orphan' handle
Using Object_id() in the watch window if the passed handle is after a destroy cXMLDOMDocument it returns 0

So in the case of child elements i'm not quite sure this is true

If you forget to destroy an object it will be properly destroyed when you destroy its parent
Or it's just a subtlety that ALL element handles are immediate children of cXMLDOMDocument as opposed to grandchildren great grandchildren etc