public static DataSet CXmlFileToDataSet(string xmlFilePath)
        {
            if (!string.IsNullOrEmpty(xmlFilePath))
            {
                //string path = HttpContext.Current.Server.MapPath(xmlFilePath);
                StringReader StrStream = null;
                XmlTextReader Xmlrdr = null;
                try
                {
                    XmlDocument xmldoc = new XmlDocument();
                    //根据地址加载Xml文件
                    xmldoc.Load(xmlFilePath);                    DataSet ds = new DataSet();
                    //读取文件中的字符流
                    StrStream = new StringReader(xmldoc.InnerXml);
                    //获取StrStream中的数据
                    Xmlrdr = new XmlTextReader(StrStream);
                    //ds获取Xmlrdr中的数据
                    ds.ReadXml(Xmlrdr);
                    return ds;
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    //释放资源
                    if (Xmlrdr != null)
                    {
                        Xmlrdr.Close();
                        StrStream.Close();
                        StrStream.Dispose();
                    }
                }
            }
            else
            {
                return null;
            }
        } 
这是转的代码

解决方案 »

  1.   

    貌似你转的时候没有设置列名哇,可能需要自己设置下:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    namespace Test2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1.将DataTable写入Xml
                List<Person> list = new List<Person> { 
                        new Person(){Id=1,Name="小明"},
                        new Person(){Id=2,Name="小华"}
                };
                DataTable dt = new DataTable("MatrixInfo");
                DataColumn dc1 = new DataColumn("ID");
                DataColumn dc2 = new DataColumn("Name");
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                foreach(Person p in list){
                    DataRow dr = dt.NewRow();
                    dr["ID"] = p.Id;
                    dr["Name"] = p.Name;
                    dt.Rows.Add(dr);
                }
                System.IO.StringWriter writer = new System.IO.StringWriter();
                dt.WriteXml(writer);
                string xmlstr= writer.ToString();
                writer.Close();
                Console.WriteLine(xmlstr);
                //2.将Xml读入DataTable, 切记MatrixInfo,ID,Name. 即表名, 列名要一一对应
                DataTable dtStep2 = new DataTable("MatrixInfo");
                DataColumn dc1Step2 = new DataColumn("ID");
                DataColumn dc2Step2 = new DataColumn("Name");
                dtStep2.Columns.Add(dc1Step2);
                dtStep2.Columns.Add(dc2Step2);
                System.IO.StringReader reader = new System.IO.StringReader(xmlstr);
                dtStep2.ReadXml(reader);
                Console.WriteLine("测试转换结果:");
                foreach (DataRow drS2 in dtStep2.Rows) {
                    Console.WriteLine(drS2[0]+"/t"+drS2[1]);
                }
                Console.ReadLine();
            }
        }
        public class Person {
            public int Id { get; set; }
            public string Name { get; set; }
        }
    }
      

  2.   

    请大家看下上面的截图为什么xml中ReportName 那一列  会变成ReportName_Text 呢?