This is a common question, please see this post:
Can an internal setter of a property be serialized?
The DataContractSerializer will let you serialize any members you want. As it is an opt-in method of serialization you will need to annotate the class as needed.
Edit
After re-reading your question, DataContractSerializer may work but that may not be what you want to do. The XMLSerializer will work with InternalsVisibleTo as it will be able to see those members but I would recommend that you look at DataContractSerializer as it is (in my opinion) a better serializer.