RT,XML文件有3个Table.
XML文件的目录形式为:F:\\vs2005\\陈志兵\\Uri\\20010814\\0001\\*.xml
小D感觉一下代码过于麻烦,很粗糙
问题:document.DataSet.ReadXml可以批量自动赋值給DataSet吗,不用自己判断(红色字体可否省略掉)代码如下:        private void frmFilterSample_Load(object sender, EventArgs e)
        {
            DataSet ReadXml = new DataSet();
            ReadXml = GetFirstFolders("F:\\vs2005\\陈志兵", ReadXml);
        }
        
        //搜索F:\\vs2005\\陈志兵下的文件夹
        private DataSet GetFirstFolders(string path, DataSet ReadXML) 
        {
            string[] folders = Directory.GetDirectories(path);
            foreach (string folder in folders) 
            {
                ReadXML = GetSecondFolders(folder, ReadXML);
                //递归调用搜索第二层文件夹
                GetFirstFolders(folder, ReadXML); 
            }
            return ReadXML;
        }
        //搜索F:\\vs2005\\陈志兵\\20090822\\下的文件
        private DataSet GetSecondFolders(string path, DataSet ReadXML) 
        {
            string[] folders = Directory.GetDirectories(path);
            foreach (string folder in folders)
            {
                ReadXML = GetXmlFiles(folder, ReadXML);
                //递归调用搜索第三层文件夹中的文件
                GetSecondFolders(folder, ReadXML);
            }
            return ReadXML;
        }
        //继续往下级目录搜索
        private DataSet GetXmlFiles(string path, DataSet ReadXML)
        {
            string[] files = Directory.GetFiles(path, "result.xml");
            foreach (string file in files)
            {
                ReadXML = ReadXmlFiles(file, "result", ReadXML);
            }
            return ReadXML;
        } 
        //读取XML文件
        private static DataSet ReadXmlFiles(string descDirectory, string fileName, DataSet ReadXML)
        {
            XmlDataDocument document = new XmlDataDocument();
            //document.DataSet.ReadXml(descDirectory + @"\" + fileName + ".xml");
            document.DataSet.ReadXml(descDirectory);
            if (document.DataSet.Tables[0].Rows.Count > 0 && ReadXML.Tables.Count>0)
            {
                if (ReadXML.Tables.Count > 0) 
                {
                    string a0 = ReadXML.Tables[0].TableName;
                    string a1 = ReadXML.Tables[1].TableName;
                    string a2 = ReadXML.Tables[2].TableName;
                    ReadXML.Tables[0].Rows.Add(document.DataSet.Tables[0]);
                }
                
                //ReadXML.Tables[1].Rows.Add(document.DataSet.Tables[0]);
                //ReadXML.Tables[2].Rows.Add(document.DataSet.Tables[0]);
            }
            else
            {
                ReadXML = document.DataSet;
            }
            return ReadXML;
        }
    }

解决方案 »

  1.   


    //读取XML文件
    private static DataSet ReadXmlFiles(string descDirectory, string fileName, DataSet ReadXML)
    {
        ReadXML.ReadXml(descDirectory);
    }晕死,一句就搞定了
      

  2.   

    1
    XmlDataDocument document = new XmlDataDocument();
    document.DataSet.ReadXml(descDirectory);2
    DataSet ReadXml = new DataSet()
    ReadXML.ReadXml(descDirectory);请教下大大们,1,2有什么区别吗
      

  3.   

    http://blog.csdn.net/gisfarmer/archive/2009/01/20/3838671.aspx
      

  4.   

    学习,不知道DATASET和XmlDataDocument 这个的区别
      

  5.   

    http://topic.csdn.net/t/20040920/02/3389023.html
    http://msdn.microsoft.com/zh-cn/library/1t4362sd(VS.80).aspx
    总结了下:
    1.如果希望用表,列和行表示数据,DataSet可能更为方便,想用树的节点来表示相同的数据的话,
      一般用XmlDataDocumnet可能要更好
    2.XmlDataDocumnet里包含一个dataset的成员变量,所以在xmldatadocument里访问datanse很容易,
      例如dataset.tables["name"].rows[0][0]一样
    3.dataset用于绑定多些,XmlDataDocumnet一般用于解析XML.
    4.ADO.NET DataSet 为您提供了数据的关系表示形式。若要实现分层数据访问,可以使用 .NET 
      Framework 中的可用 XML 类。以前,数据的这两种表示形式是单独使用的。
      不过,.NET Framework 允许分别通过 DataSet 对象和 XmlDataDocument 对象对数据的关系
      和分层表示形式进行实时、同步的访问。附:第四点是CSDN上的,这里的分层数据访问不是很明白,感觉XmlDataDocument 解析XML后的
       各类节点比较好理解,类似于树型结构,而DataSet象多维数组