XML XNA如何忽略元素

时间:2012-09-16 11:13:12

标签: c# xml xna linq-to-xml

我试图基本上建立一个允许我加载多种类型敌人的系统。一种类型的敌人比其他敌人需要更多的元素。所以举个例子。

XDocument doc = XDocument.Load("Levels\\Level"+ levelIndex + "\\Waves" + levelIndex + ".xml");

List<WaveInfo> waveInfo = new List<WaveInfo>();


        waveInfo = (from wave in doc.Descendants("wave")
                          select new WaveInfo()
                          {
                          enemiesInfo = (from i in wave.Descendants("enemy")
                                     select new EnemyInfo()
                                     {
                                         type = Convert.ToInt32(i.Element("type").Value),
                                         colour = Convert.ToInt32(i.Element("colour").Value),
                                         speed = (float)Convert.ToDouble(i.Element("speed").Value),
                                         spawnTime = (float)Convert.ToDouble(i.Element("spawnTime").Value),
                                     }).ToList()
                          }).ToList();

这样可以正常工作并且可以加载两种类型的敌人。但是在我的xml中,我必须为不需要它的敌人类型添加颜色元素。我想要发生的是,对于一种类型的敌人,我可以不打扰编写颜色标记,而序列化程序只是将其作为空值处理。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

这应该有效:

colour = i.Element("colour") != null ?
        Convert.ToInt32(i.Element("colour").Value) : 0,

或者,您可以更好地使用explicit operator,例如this one,如下所示:

colour = (int?)i.Element("colour") ?? 0,