Most content of roSgNode&co is already accessible by using the reflection methods from
ifSGNodeField and
ifSGNodeChildren.
It would be next to trivial writing a recursive function to dump that in XML. This conversion however cannot be 100%, since some field values are composite objects - while XML attributes can only be primitive types (strings, really). In other words, there is no 1:1 mapping between the two; not all roSgNodes can be put back in XML can.
And a notable sore thumb remain the functions, which RSG treats like red-headed stepchild and won't admit even their names.