Как загрузить данные из XML в список - PullRequest
1 голос
/ 03 сентября 2011

Мне нужен совет.Я разрабатываю простую игру для Silverlight, и мне нужно загрузить определения уровней из XML в List, но я не уверен, как лучше это сделать.

мой xml выглядит как

<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; }
    }
    ...
}

Не могли бы вы дать мне совет, как это сделать?

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Я бы просто быстро что-то вроде этого здесь (при условии, что в вашем xml есть несколько уровней):

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();
}
1 голос
/ 03 сентября 2011

Я бы рассмотрел использование LinqToXml здесь.

Я бы написал короткую демонстрацию, но этот вопрос демонстрирует концепции, которые вам понадобятся достаточно хорошо @

De /Сериализация непосредственно в / из XML Linq

Редактировать: для ясности, если вы убедитесь, что ваш класс Cell аннотирован этими атрибутами XML, поведение десериализации должно работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...