I'm using an XmlSerializer to serialize an object and write it to a file. I've had quite a bit of success with the serializer doing what I want it to do in terms of nesting elements and what is serialized as elements vs attributes. Unfortunately, I've run into a problem where I need one member of a class to serialize before another. Elsewhere it's worked for me that whatever is declared first gets serialized first, but in this instance I'm not having so much success with that. Is there any way to manually control the order in which things are serialized?
A:
XmlElementAttribute.Order
, which controls "the explicit order in which the elements are serialized or deserialized".
Tim Robinson
2010-07-30 16:40:32
+3
A:
[XmlElementAttribute(Order = 1)]
public int Field1 {...}
[XmlElementAttribute(Order = 2)]
public int Field2 {...}
Catch: You must specify the Order
for all of your members.
Robert Harvey
2010-07-30 16:42:09
Perfect. I guess I either missed that on MSDN or didn't dig enough to find it. Thanks.
Zannjaminderson
2010-07-30 20:43:29
Possibly related: Is there any way to control the order with XML attributes? `XmlAttributeAttribute` does not have such a property.
Travis Gockel
2010-08-05 01:41:31
@Travis: In my experience, there are fewer (if any) problems with getting attributes to serialize in the order they are declared.
Robert Harvey
2010-08-05 02:01:17