最近在做一个windows phone上的小游戏。这个游戏是这样的。游戏有很多关卡,每个关卡的一些信息都写在 了
xml里。用户可以根据自己的需要选择关卡。这就需要从xml里读出这个关卡的设置。我要用4重循环才能完成这个功能。
我先解释一下xml这个文件。 这个里面包含了不同分辨率的手机的不同设置,而且每个分辨率下又有很多的布局。
下面是我的代码。 public BlockPoint[] GetSearchData()
        {            XmlReader rdr = XmlReader.Create("InitializeSettingXML.xml");
            while(!rdr.EOF)            {
                if (rdr.MoveToContent() == XmlNodeType.Element && rdr.Name == "resolution")
                {
                    if (resolution == rdr.GetAttribute(0))//进入这种分辨率下搜索。
                    {
                        while (!rdr.EOF)                        {
                            rdr.Read();
                            if (rdr.MoveToContent() == XmlNodeType.Element && rdr.Name == "layout")
                            {
                                if (layout == rdr.GetAttribute(0))//读取当前分辨率下这种布局的数据。
                                {
                                    getData(rdr); //这个函数里还有两重循环。                           }
                            }
                        }
                    }
                }
                else
                {                    rdr.Read();
                }            }
            return blocklist;
        }我想问大家我的这种代码写法好不好,我总是觉得我的代码效率不高。但是又想不到更好的方法。如果有什么可以优化的地方,希望大家能告诉我。

解决方案 »

  1.   

    读取一个XML怎么会用到四层循环?你可以用递归
      

  2.   

    我没学过xml这个都是昨天边看书边写出来的。
      

  3.   

    XML操作类
      

  4.   

    下次在规划xml描述的时候,请先把xsd架构弄出来,或者先把你的对象弄出来如果你按上面的做法就一点也不困难了,xsd可以很容易生成对应的c#对象,而先对象后xml也无需多操心,直接序列化/反序列化即可
      

  5.   

    你用 Xml EnSerialbable 反序列化就可以了,没有必要写那么多循环