Ok, never mind. I guess it does serialize embedded DataSets (but not DataRows and a few other things like interfaces). The key to make this work is to hide the things that can't be exported with the
[XmlIgnore]
attribute. Without this the objects won't even serialize, but with it they do just fine.