反序列化数组数组
Deserialize array of arrays
我是连载新手,正在尝试解决这个问题:
我有这个 xml 文件
<Database>
<Castle>
<Tower>
<Roof>
<Color>red</Color>
</Roof>
<Roof>
<Color>blue</Color>
</Roof>
<Roof>
<Color>pink</Color>
</Roof>
</Tower>
<Tower>
<Roof>
<Color>green</Color>
</Roof>
<Roof>
<Color>black</Color>
</Roof>
</Tower>
</Castle>
我正在尝试从我的 xml 文件中获取数据并将其放入我的 类 结构中,如下所示:
class Castle{ // I want this to fill with tower[0] and tower[1]
public Towers[] tower;
}
class Towers{ // I want this to fill with tower[0].roof[0], tower[0].roof[1], tower[0].roof[2] and tower[1].roof[0], tower[1].roof[1]
public Roofs[] roof;
}
class Roofs{ // And finally I want to be able co call tower[1].roof[1] and get variable "black"
public string color;
}
为此我使用了这个函数:
public static Castle Load(string path)
{
var serializer = new XmlSerializer(typeof(Castle));
using(var stream = new FileStream(path, FileMode.Open))
{
return serializer.Deserialize(stream) as Castle;
}
}
我的问题是,我无法正确设置 XmlArray 和 XmlArrayItem 以从我的 xml 获取数据。你能给我一些解决问题的建议吗?
使用注解在xml:
中获取准确的节点名称
[Serializable]
public class Castle
{
[XmlElement("Tower")]
public Towers[] tower;
}
public class Towers
{
[XmlElement("Roof")]
public Roofs[] roof;
}
public class Roofs
{
[XmlElement("Color")]
public string color;
}
当我从您的 xml 中删除初始 [Database]
节点时,这对我来说很好用,因为它使 xml 无效。
我是连载新手,正在尝试解决这个问题: 我有这个 xml 文件
<Database>
<Castle>
<Tower>
<Roof>
<Color>red</Color>
</Roof>
<Roof>
<Color>blue</Color>
</Roof>
<Roof>
<Color>pink</Color>
</Roof>
</Tower>
<Tower>
<Roof>
<Color>green</Color>
</Roof>
<Roof>
<Color>black</Color>
</Roof>
</Tower>
</Castle>
我正在尝试从我的 xml 文件中获取数据并将其放入我的 类 结构中,如下所示:
class Castle{ // I want this to fill with tower[0] and tower[1]
public Towers[] tower;
}
class Towers{ // I want this to fill with tower[0].roof[0], tower[0].roof[1], tower[0].roof[2] and tower[1].roof[0], tower[1].roof[1]
public Roofs[] roof;
}
class Roofs{ // And finally I want to be able co call tower[1].roof[1] and get variable "black"
public string color;
}
为此我使用了这个函数:
public static Castle Load(string path)
{
var serializer = new XmlSerializer(typeof(Castle));
using(var stream = new FileStream(path, FileMode.Open))
{
return serializer.Deserialize(stream) as Castle;
}
}
我的问题是,我无法正确设置 XmlArray 和 XmlArrayItem 以从我的 xml 获取数据。你能给我一些解决问题的建议吗?
使用注解在xml:
中获取准确的节点名称 [Serializable]
public class Castle
{
[XmlElement("Tower")]
public Towers[] tower;
}
public class Towers
{
[XmlElement("Roof")]
public Roofs[] roof;
}
public class Roofs
{
[XmlElement("Color")]
public string color;
}
当我从您的 xml 中删除初始 [Database]
节点时,这对我来说很好用,因为它使 xml 无效。