One very easy solution is to allways use ma files thety are very easy to parse.
BUt yeah if you wish to do this in pure api manner then you need to do a LOT of extra work. Since the operations a e very lowlevell.
i mean you need tos tep tru a lot offf stuff to get what mel offers.
MObject obj,attr;
int enumVal;
MSelectionList list;
list.add(MString("defaultRenderGlobals"));
list.getDependNode(0,obj);
MFnDependencyNode depend(obj);
attr=depend.attribute(MString("imageFormat"))
MPlug plug(obj,attr);
plug.getValue(enumVal);
MFnEnumAttribute enumAttr(attr);
MString result=enumAttr.fieldName(enumVal);
MGlobal:: displayInfo(result);
Tough this is nowhere near optimal it does the job. But a total different strategy is in order if you want ALL the attributes of a certain node.
PS you dont happen to make a render dispatcher now do you?