If you want to stay away from writing your own serialization and deserialization mechanism for the metabase data, you can use the code that Microsoft uses in the Export/Import XML functionality in the IIS console. Yo' re going to have to write code to interface with it, but the API is there to do what you want starting in IIS 6.
Have a look at the IMSAdminBase2 object, and specifically the IMSAdminBase2::Export and IMSAdminBase2::Import methods.
You could use ADSI to accomplish what you're looking for, but then you're talking about enumerating the metabase, serializing the data yourself into your own proprietary XML schema, then deserializing it and importing it into the metabase on the destination server yourself. I'd avoid that, personally.