Bjorn,
what appeared as a bug is actually intentional. You'll have to include the --persist flag in your call to xml_parse if you intend to avoid the automatic freeing of the DOM tree.
When I made the change, all of the package in OpenACS core used the --persist flag. I suggest changing the calling script. Or remove the --persist flag from xml_parse all together and always return a persistent DOM tree. Please note that persistent trees require explicit deletion.
I'll comment on the xml_doc_get_first_node_by_name after my return from NY.
/Bart