如何将数据从XML加载到列表
我需要一个建议。我正在用silverlight开发一些简单的游戏,我需要将XML中的级别定义加载到列表中,但我不确定最好的方法是什么 我的xml看起来像如何将数据从XML加载到列表,xml,silverlight,linq,c#-4.0,Xml,Silverlight,Linq,C# 4.0,我需要一个建议。我正在用silverlight开发一些简单的游戏,我需要将XML中的级别定义加载到列表中,但我不确定最好的方法是什么 我的xml看起来像 <Levels> <Level levelNumber = "1" startingX="2" startingY="2"> <Cells> <Cell CellType="A" PositionX="0" PositionY="0" /> <Cell C
<Levels>
<Level levelNumber = "1" startingX="2" startingY="2">
<Cells>
<Cell CellType="A" PositionX="0" PositionY="0" />
<Cell CellType="A" PositionX="1" PositionY="0" />
<Cell CellType="A" PositionX="2" PositionY="0" />
<Cell CellType="A" PositionX="3" PositionY="0" />
<Cell CellType="A" PositionX="4" PositionY="0" />
<Cell CellType="A" PositionX="5" PositionY="0" />
<Cell CellType="A" PositionX="0" PositionY="1" />
<Cell CellType="B" PositionX="1" PositionY="1" />
<Cell CellType="B" PositionX="2" PositionY="1" />
<Cell CellType="B" PositionX="3" PositionY="1" />
<Cell CellType="B" PositionX="4" PositionY="1" />
<Cell CellType="B" PositionX="5" PositionY="1" />
<Cell CellType="A" PositionX="1" PositionY="2" />
<Cell CellType="B" PositionX="2" PositionY="2" />
<Cell CellType="B" PositionX="3" PositionY="2" />
<Cell CellType="B" PositionX="4" PositionY="2" />
<Cell CellType="A" PositionX="5" PositionY="2" />
<Cell CellType="A" PositionX="1" PositionY="3" />
<Cell CellType="B" PositionX="2" PositionY="3" />
<Cell CellType="B" PositionX="3" PositionY="3" />
<Cell CellType="B" PositionX="4" PositionY="3" />
<Cell CellType="A" PositionX="4" PositionY="3" />
</Cells>
</Level>
</Levels>
我需要加载到列表的级别
我的水平班
public class Level
{
private int levelNumber;
private int startingX;
private int startingY;
public List<Cell> cellList = new List<Cell>();
public int LevelNumber
{
get { return levelNumber; }
set { levelNumber = value; }
}
...
}
公共类级别
{
私有整数;
私人int startingX;
私人内部启动;
公共列表cellList=新列表();
公共整数
{
获取{return levelNumber;}
设置{levelNumber=value;}
}
...
}
你能给我一个建议吗?怎么办? < P> >我想考虑使用Link QuixML。 我会写一个快速演示,但这个问题很好地演示了您需要的概念@
编辑:为了清楚起见,如果您确保您的单元格类使用这些Xml属性进行了注释,那么反序列化行为应该可以正常工作。我只想在这里快速地做一些类似的事情(假设您的Xml中有多个级别):
谢谢你的回复。我的Cell类和Level类都有注释(没有发布带有注释的行)。。但是你能给我写一封反序列化的小圆顶吗?我可以让它工作..当我回到我的电脑上时,我会试着给你贴一个例子!我们不应该也假设像PositionX这样的值是整数而不是字符串吗?非常感谢,属性是整数,但它使用了Convert.ToInt32(l.Attribute(“startingX”).Value),它完全适合我..很高兴它能工作。理想情况下,您还需要进行某种检查,查看该值是否为null以及是否与整数兼容。
XDocument xdoc = XDocument.Load(url); // assuming you're pulling your xml from a service.
if (xdoc != null)
{
var levels =
(from l in xdoc.Descendants("Level")
select new Level
{
levelNumber = l.Attribute("levelNumber").Value,
startingX = l.Attribute("startingX").Value,
startingY = l.Attribute("startingy").Value,
cellsList = (from c in l.Descendants("Cell")
select new Cell
{
CellType = c.Attribute("CellType").Value,
PositionX = c.Attribute("PostionX").Value,
PositionY = c.Attribute("PositionY").Value
}).ToList()
}
).ToList();
}