I know this is an old post, but I too found it useful. I was trying to do a copy using llNode.NodeCategoryGet() then throwing the attrData into llNode.NodeCategoryUpdate(). The key is you have to build a new attr data object, and copy the .fData across between the two.
-Hugh