我正在尝试使用XML文件存储我的高分,这是我的高分类
[Serializable]
public struct HighScoreData {
public string[] PlayerName;
public int[] Score;
public int[] Level;
public int Count;
public HighScoreData(int count) {
PlayerName = new string[count];
Score = new int[count];
Level = new int[count];
Count = count;
}
}
这是我的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
<!-- TODO: replace this Asset with your own XML asset data. -->
<Asset Type="Cellular.HighScoreData">
<PlayerName>
<Item>1</Item>
<Item>2</Item>
<Item>3</Item>
<Item>4</Item>
<Item>5</Item>
<Item>6</Item>
<Item>7</Item>
<Item>8</Item>
<Item>9</Item>
<Item>10</Item>
</PlayerName>
<Score>
<Item>1</Item>
<Item>2</Item>
<Item>3</Item>
<Item>4</Item>
<Item>5</Item>
<Item>6</Item>
<Item>7</Item>
<Item>8</Item>
<Item>9</Item>
<Item>10</Item>
</Score>
<Level>
<Item>1</Item>
<Item>2</Item>
<Item>3</Item>
<Item>4</Item>
<Item>5</Item>
<Item>6</Item>
<Item>7</Item>
<Item>8</Item>
<Item>9</Item>
<Item>10</Item>
</Level>
<Count>10</Count>
</Asset>
这是我从XML加载数据的方法
public void LoadStoredHighScore() {
FileStream stream = File.Open(HighScoreFile, FileMode.Open, FileAccess.Read);
try {
XmlSerializer serializer = new XmlSerializer(typeof(HighScoreData));
highScoreList = (HighScoreData) serializer.Deserialize(stream);
} finally {
stream.Close();
}
}
in“highScoreList =(HighScoreData)serializer.Deserialize(stream);”这条线, 它给了我异常“XML文档中存在错误(0,0)。” 内部异常“根元素缺失”。
我做错了吗? 任何帮助表示赞赏。
答案 0 :(得分:0)
首先,序列化程序将查找一个名为您尝试反序列化的类型的根元素,它无法找到。
接下来,您无法反序列化为此结构,因为它没有默认构造函数。序列化器无法确定要作为count参数传递的内容。阅读this article以获取更多详细信息。
这是一个建议的根结构:
<?xml version="1.0" encoding="utf-8" ?>
<HighScoreData>
<PlayerName>
...
</HighScoreData>