XmlElement has an \"Order\" attribute which you can use to specify the precise order of your properties (in relation to each other anyway)
In C#, as far as what I have found, the order of attributes are serialized in the order that they are defined in the class.
See my answer to this question here: https://stackoverflow.com/a/21468092/607117