C#正确地将XElement的属性解析为列表(异常帮助)

时间:2010-12-10 03:44:46

标签: c# xml linq

大家好日子,我希望你们都快乐健康。)

我的问题如下:

我首先在我的主要枚举中加入一堆XElement(航路点):

IEnumerable waypoints = file.Descendants(“Waypoints”)。First()。Elements();

然后我开始按如下方式迭代它们:

foreach (XElement el in waypoints)
        {
            try
            {
                //ok so this should be one element here..
                Waypoint tempWP =
                    new Waypoint((el.Attribute("X") != null ? Convert.ToSingle(el.Attribute("X").Value) : 0.0F),
                                 (el.Attribute("Y") != null ? Convert.ToSingle(el.Attribute("Y").Value) : 0.0F),
                                 (el.Attribute("Z") != null ? Convert.ToSingle(el.Attribute("Z").Value) : 0.0F),
                                 (el.Attribute("Zone") != null ? Convert.ToUInt64(el.Attribute("Zone").Value) : 0),
                                 (el.Attribute("Type") != null ? el.Attribute("Type").Value : ""),
                                 (el.Attribute("SafeRadius") != null ? Convert.ToUInt32("SafeRadius") : 0),
                                 (el.Attribute("Guid") != null ? Convert.ToUInt64("Guid") : 0));
                ret.Add(tempWP);
            }
            catch (Exception)
            {

            }
        }

从我的调试中,我知道el = Waypoint X =“1032.91858”Y =“ - 3671.47949”Z =“35.0046425”Zone =“111”Type =“none”SafeRadius =“1”Guid =“111”/

所以XElement会好起来的。正如你所看到的,我试图将X / Y / Z转换为单曲,Zone转换为UInt64 ......等等,然后我希望将它们添加到返回的航点列表中。

但是,每次我的foreach运行时,都会遇到异常......“输入字符串的格式不正确。”有谁知道为什么会这样?我相信我的空检查和转换应该是正确的,不是吗?

非常感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:1)

您尝试转换为数字类型的值之一是空字符串或包含字母。