I think I've *almost* got this. I define a structure that maps elements in a struct to an XML node name and sprintf formatting code, like this: bt_xml_node infohash_nodes[] = { { "Filename", "%s", (int)(&new_bt_infohash.filename) - (int)(&new_bt_infohash) }, { "Filesize", "%llu", (int)(&new_bt_infohash.filesize) - (int)(&new_bt_infohash) }, { NULL, NULL, NULL } }; Then I use some functions (attached) to use these structures to iterate through a CStruct and create an XML node tree. Ideally, I'm going to use the same structures to load the information from XML back into CStructs. Is there a better / more standard way to do this? I'm happy with this approach, except right now it seems like I need bunch of crappy if/else's to translate all the sprintf() formatting codes to data types (example attached). Thanks, Tyler
Attachment:
bt_xml.c
Description: Text Data
Attachment:
bt_xml.h
Description: Text Data