I have an XML in the form
0
0
You should just have to do the following for this to work:
[XmlElement]
public int[] ScheduledDay { get; set; }
By adding this attribute, every time the ScheduledDay element is seen by the (de)serializer it will know to add it to this array.
You don't want XmlArrayItem
. You want the array of ints to be serialized without a parent element, which means you should decorate the array itself with XmlElement
. Because you have a particular order, you will want to use the Order
value on the XmlElement attribute. Here's the class, modified accordingly:
public class BackupScheduleSettings
{
public BackupScheduleSettings()
{
ScheduledDay = new int[7];
}
[XmlElement(Order=1)]
public int AggressiveMode;
[XmlElement(Order=2)]
public int ScheduleType;
//[XmlArrayItem("ArrayWrapper")]
[XmlElement(Order=3)]
public int[] ScheduledDay { get; set; }
[XmlElement(Order=4)]
public int WindowStart;
[XmlElement(Order=5)]
public int WindowEnd;
[XmlElement(Order=6)]
public int ScheduleInterval;
}
Here's the generated xML:
<BackupScheduleSettings>
<AggressiveMode>0</AggressiveMode>
<ScheduleType>0</ScheduleType>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<WindowStart>0</WindowStart>
<WindowEnd>0</WindowEnd>
<ScheduleInterval>0</ScheduleInterval>
</BackupScheduleSettings>
Decorate your property:
[XmlElement("ScheduledDay")]
public int[] ScheduledDay { get; set; }