从XML文件反序列化int数组
本文关键字:int 数组 反序列化 文件 XML | 更新日期: 2023-09-27 17:50:22
我正在写一个c#项目,我正在尝试反序列化一个具有类型为int[]的字段的对象,我想用另一种方式进行反序列化。
假设我有一门课:
class Player
{
public string Name;
public int[] Spells;
}
还有一个xml文件,我从中反序列化类Player:的实例
<Player>
<Name>John</Name>
<Spells>
<int>1</int>
<int>5</int>
<int>9</int>
</Spells>
</Player>
问题是,我不希望xml文件看起来像那样,我希望它更像这样:
<Player>
<Name>John</Name>
<Spells>1 5 9</Spells>
</Player>
我使用的是XmlSerializer,它只在读取表单第一个xml时反序列化字段Spells。我想知道这是否是一种像反序列化简单字段一样反序列化int数组的方法。
其中一种方法可以是创建另一个属性,该属性将使用空格分隔集进行序列化。例如,
class Player
{
public string Name;
[XmlIgnore]
public int[] Spells;
[XmlElement("Spells")
public string SpellsString
{
get
{
// array to space delimited string
}
set
{
// string to array conversion
}
}
}
class Player
{
public string Name { get; set; }
public string SpellData { get; set; }
public int[] Spells() {
return SpellData.Split(" ").select(n=>int.parse(n)).ToArray();
};
}
这样做会使xml数据看起来像您想要的那样,因为在字符串上而不是函数上会被序列化。但是,您为什么关心xml的外观呢?另一个xml要干净得多。
如果将拼写存储在XML中以空格分隔的字符串中,则可以使用以下代码将其转换为整数列表:
var spellsAsIntegers =
spellsAsString.Split(' ').Select(n => int.Parse(n)).ToList();