I have an XML in the form
<BackupSchedule>
<AggressiveMode>0</AggressiveMode>
<ScheduleType>0</ScheduleType>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>1</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<ScheduledDay>0</ScheduledDay>
<WindowStart>480</WindowStart>
<WindowEnd>1020</WindowEnd>
<ScheduleInterval>0</ScheduleInterval>
</BackupSchedule>
I need to deserialize it, change its contents and than save it back. I am facing problem in reading ScheduledDay element. My class is like
public class BackupScheduleSettings
{
public BackupScheduleSettings()
{
ScheduledDay = new int[7];
}
.....
public int[] ScheduledDay { get; set; }
.....
}
Now when I load XML content which has right values for ScheduledDay, my class array is still NULL.
I can't modify the content/format of XML since it is legacy code. I don't want to use XDocument to read the value since it is a large XML and I need to serialize it again.
I have searched a lot without any help. Any ideas will be highly appreciated.
Thanks...
You should just have to do the following for this to work:
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 withXmlElement
. Because you have a particular order, you will want to use theOrder
value on the XmlElement attribute. Here's the class, modified accordingly:Here's the generated xML:
Decorate your property: