sho*_*hit 13 c# xml xml-serialization xml-deserialization
我在表单中有一个XML
<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>
Run Code Online (Sandbox Code Playgroud)
我需要对其进行反序列化,更改其内容并将其保存回来.我在阅读ScheduledDay元素时遇到问题.我的班级就像
public class BackupScheduleSettings
{
public BackupScheduleSettings()
{
ScheduledDay = new int[7];
}
.....
public int[] ScheduledDay { get; set; }
.....
}
Run Code Online (Sandbox Code Playgroud)
现在,当我加载具有ScheduledDay正确值的XML内容时,我的类数组仍为NULL.
我无法修改XML的内容/格式,因为它是遗留代码.我不想使用XDocument读取值,因为它是一个大型XML,我需要再次序列化它.
我没有任何帮助就搜索了很多.任何想法将受到高度赞赏.
谢谢...
Che*_*eso 20
你不想要XmlArrayItem.您希望在没有父元素的情况下序列化整数数组,这意味着您应该使用它来装饰数组本身XmlElement.因为您有特定的订单,所以您需要使用OrderXmlElement属性上的值.这是类,相应修改:
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;
}
Run Code Online (Sandbox Code Playgroud)
这是生成的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>
Run Code Online (Sandbox Code Playgroud)
Ali*_*tad 15
装饰你的财产:
[XmlElement("ScheduledDay")]
public int[] ScheduledDay { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16104 次 |
| 最近记录: |