XmlDocument doc = new XmlDocument();  // 声明xml文档对象
doc.Load("xml文件名");  // 装载xml文件
XmlNodeList nods = doc.SelectNodes("information/data");  // 获取所有的data节点集合
foreach(XmlNode nodData in nods)  // 遍历data节点集合
{
  XmlNode nodValue;
  nodValue = nodData.SelectSingleNode("playTime");  // 取得playTime节点
  // nodValue.innerText 即为playTime节点内的值
  nodValue = nodData.selectSingleNode("message");  // 取得message节点
  // nodValue.Attributes["fontsize"].Value 即为fontsize属性的值
  // nodValue.Attributes["color"].Value 为color属性的值
  // nodValue.Attributes["mode"].Value 为mode属性的值
  nodValue = nodData.SelectSingleNode("times");  // 取得times节点
  // nodValue.innerText 即为times节点内的值
}

解决方案 »

  1.   

    我还想问一下,如何将这些取出来的数据进行存放?
    1:每取一次,实例一个结构,然后赋值,在将这个结构放到一个ARR数组里面
    2:定义一个多维数组来存放取出来的值
    哪个方案比较好?
      

  2.   

    第一种比较好,多维数组的话不便为维护,另外你也可以把数据放到一个DataTable里
      

  3.   

    那能获取到当前的节点是第几个吗?
    不然的话是不是要用一个i++来决定插入到哪个ARRAYLIST里面?
      

  4.   

    你可以用泛型集合类 List<> 来保存,这样不用理会位置的事情,只管Add好了
      

  5.   

    晕,感谢,现在是申明的一个ARR数组,我白痴啊!我完全忘记这本来就是一个集合了,汗死~
      

  6.   


     static void Main(string[] args)
            {
                XmlDocument doc = new XmlDocument(); //声明xml文档对象
                doc.Load("D:/VSProject/ReadXmlTest/ReadXmlTest/XmlFile/XMLFileTest.xml"); //读取xml文件
                XmlNodeList xmlnodes = doc.SelectNodes("information/data"); //获取所有data节点的集合
                foreach (XmlNode xmlnode in xmlnodes)
                {
                    //int i = 0;
                    XmlNode nodValue;
                    nodValue = xmlnode.SelectSingleNode("playTime");
                    Console.WriteLine("playTime节点值为:"+nodValue.InnerText+"\r");
                    nodValue = xmlnode.SelectSingleNode("message");
                    Console.WriteLine("message节点值为:"+nodValue.InnerText+"\r");
                    Console.WriteLine("message节点属性为:\r");
                    Console.WriteLine("fontsize=" + nodValue.Attributes["fontsize"].Value + "\r");
                    Console.WriteLine("color=" + nodValue.Attributes["color"].Value + "\r");
                    Console.WriteLine("mode=" + nodValue.Attributes["mode"].Value + "\r");
                    nodValue = xmlnode.SelectSingleNode("times");
                    Console.WriteLine("times节点值为:" + nodValue.InnerText);
                }
                Console.ReadKey();
            }这样可以将输出的值放入数组!当节点改变时就将节点数加一,这样就可以判断是第几个节点了!
      

  7.   

    form2.ShowDialog()
    这样显示出来的FORM2可以拖动大小,有什么办法能让它不能拖动大小吗?
    而且这样使用FORM2需要使用using WindowsApplication2;命名空间,一个FORM一次,有一次性全部申明的吗?
      

  8.   

    try如何只捕捉一次错误?
    我需要用CATCH来捕捉很多种错误,然后在设一个无参数的CATCH来捕捉未知的异常,但是如果之前有CATCH捕捉到了异常,那么后面的那个无参数的又会捕捉一次,如何只捕捉一次?