Я пытаюсь преобразовать свой XML-документ в C# 2D-список. Но когда я делаю это список пуст ...Deserialize XML to C# 2D List
Вот мой XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<data>
<levels>
<level ID="0">
<theItem ID="0">
<type>Corner</type>
<rotation>180</rotation>
<positionX>-5.5</positionX>
<positionY>-2.5</positionY>
</theItem>
<theItem ID="1">
<type>TripleBar</type>
<rotation>270</rotation>
<positionX>-4.5</positionX>
<positionY>-2.5</positionY>
</theItem>
<theItem ID="2">
<type>Corner</type>
<rotation>270</rotation>
<positionX>-3.5</positionX>
<positionY>-2.5</positionY>
</theItem>
<theItem ID="3">
<type>Bar</type>
<rotation>0</rotation>
<positionX>-5.5</positionX>
<positionY>-1.5</positionY>
</theItem>
</level>
</levels>
</data>
И это мои классы:
[Serializable]
public class theItem
{
[XmlAttribute("ID")]
public string ID { get; set; }
[XmlElement("type")]
public string type { get; set; }
[XmlElement("rotation")]
public int rotation { get; set; }
[XmlElement("positionX")]
public int positionX { get; set; }
[XmlElement("positionY")]
public int positionY { get; set; }
}
[Serializable]
public class level
{
[XmlAttribute("ID")]
public string ID { get; set; }
[XmlArray("level")]
public List<theItem> theItems { get; set; }
}
[Serializable]
[XmlRoot("data")]
public class data
{
[XmlArray("levels")]
[XmlArrayItem("level")]
public List<level> levels { get; set; }
}
И это мой десериализатор код:
var serializer = new XmlSerializer(typeof(data));
using (var reader = XmlReader.Create("LevelData.xml"))
{
data info = (data)serializer.Deserialize(reader);
List<level> levels = info.levels;
}
Проблема в том, что когда я пытаюсь проверить длину каждого списка, мой первый список имеет длину 1, которая является нормой l, но second is = 0 ... Что я хочу сказать, так это то, что я хочу получить такой список: Список уровней < уровня и на каждом уровне, чтобы быть списком < theItem> theItems with theItem элементы и каждый элемент для его содержимого, как в файле XML ... Я пробовал несколько способов, но я не нашел решения для своей проблемы. Спасибо заранее и извините за мой плохой английский!
КПП. «-5.5» не является int. –
Обратите внимание, что атрибут [Serializable] ** не является ** каким-либо образом связанным с сериализацией XML. –
Моя ошибка здесь, я изменил на float ... –