I recommend taking a look at the discussion here: Why XML-Serializable class need a parameterless constructor.
You should consider using DataContractSerializer. As far as I can tell from the docs, this do not require a parameterless constructor, and can serialize/deserialize private members.