博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# DataTable信息与XML格式的保存与读取
阅读量:6952 次
发布时间:2019-06-27

本文共 4543 字,大约阅读时间需要 15 分钟。

hot3.png

一、将DataTable的内容写入到XML文件中

/// /// 将DataTable的内容写入到XML文件中/// /// 
数据源/// 
XML文件地址public static bool WriteToXml(DataTable dt, string address){    try    {        //如果文件DataTable.xml存在则直接删除        if (File.Exists(address))        {            File.Delete(address);        }        XmlTextWriter writer =             new XmlTextWriter(address, Encoding.GetEncoding("GBK"));        writer.Formatting = Formatting.Indented;        //XML文档创建开始        writer.WriteStartDocument();        writer.WriteComment("DataTable: " + dt.TableName);        writer.WriteStartElement("DataTable"); //DataTable开始        writer.WriteAttributeString("TableName", dt.TableName);        writer.WriteAttributeString("CountOfRows", dt.Rows.Count.ToString());        writer.WriteAttributeString("CountOfColumns", dt.Columns.Count.ToString());        writer.WriteStartElement("ClomunName", ""); //ColumnName开始        for (int i = 0; i < dt.Columns.Count; i++)        {            writer.WriteAttributeString(                "Column" + i.ToString(), dt.Columns[i].ColumnName);        }        writer.WriteEndElement(); //ColumnName结束        //按行各行        for (int j = 0; j < dt.Rows.Count; j++)        {            writer.WriteStartElement("Row" + j.ToString(), "");                                //打印各列            for (int k = 0; k < dt.Columns.Count; k++)            {                writer.WriteAttributeString(                    "Column" + k.ToString(), dt.Rows[j][k].ToString());            }            writer.WriteEndElement();        }        writer.WriteEndElement(); //DataTable结束        writer.WriteEndDocument();        writer.Close();        //XML文档创建结束    }    catch (Exception ex)    {        Console.WriteLine(ex.Message);        return false;    }    return true;}

二、将以上述格式在XML中保存的信息读取到DataTable内

/// /// 从XML文件中读取一个DataTable/// /// 
数据源/// 
XML文件地址/// 
public static DataTable ReadFromXml(string address){    DataTable dt = new DataTable();    try    {        if (!File.Exists(address))        {            throw new Exception("文件不存在!");        }        XmlDocument xmlDoc = new XmlDocument();        xmlDoc.Load(address);        XmlNode root = xmlDoc.SelectSingleNode("DataTable");        //读取表名        dt.TableName = ((XmlElement)root).GetAttribute("TableName");        //Console.WriteLine("读取表名: {0}", dt.TableName);        //读取行数        int CountOfRows = 0;        if (!int.TryParse(((XmlElement)root).            GetAttribute("CountOfRows").ToString(), out CountOfRows))        {            throw new Exception("行数转换失败");        }        //读取列数        int CountOfColumns = 0;        if (!int.TryParse(((XmlElement)root).            GetAttribute("CountOfColumns").ToString(), out CountOfColumns))         {            throw new Exception("列数转换失败");        }        //从第一行中读取记录的列名        foreach (XmlAttribute xa in root.ChildNodes[0].Attributes)        {            dt.Columns.Add(xa.Value);            //Console.WriteLine("建立列: {0}", xa.Value);        }        //从后面的行中读取行信息        for (int i = 1; i < root.ChildNodes.Count; i++)        {            string[] array = new string[root.ChildNodes[0].Attributes.Count];            for (int j = 0; j < array.Length; j++)            {                array[j] = root.ChildNodes[i].Attributes[j].Value.ToString();            }            dt.Rows.Add(array);            //Console.WriteLine("行插入成功");        }    }    catch (Exception ex)    {        Console.WriteLine(ex.Message);        return new DataTable();    }    return dt;}

三、Main函数调用

static void Main(string[] args){    //1.将DataTable内容写入到XML文件    //建立DataTable取名Table4Test    DataTable dt1 = new DataTable("Table4Test");    //生成四列,列名为Column0-3    dt1.Columns.Add("Column0");    dt1.Columns.Add("Column1");    dt1.Columns.Add("Column2");    dt1.Columns.Add("Column3");    //生成四行    dt1.Rows.Add("A0", "A1", "A2", "A3");    dt1.Rows.Add("B0", "B1", "B2", "B3");    dt1.Rows.Add("C0", "C1", "C2", "C3");    //写入到XML    if (WriteToXml(dt1, "DataTable.xml"))    {        Console.WriteLine("写入成功");    }    //================================    //2.从XML文件中读取内容到DataTable    //读取信息    DataTable dt2 = ReadFromXml("DataTable.xml");    //输出读取的信息    Console.WriteLine("读取到的信息:");    for (int i = 0; i < dt2.Rows.Count; i++)    {        for (int j = 0; j < dt2.Columns.Count; j++)        {            Console.Write(dt2.Rows[i][j].ToString() + "\t");        }        Console.WriteLine();    }    Console.ReadLine();}

四、程序运行结果

程序运行结果

200836_fYDc_1425762.png

写入后的XML文件

200817_DbCj_1425762.png

END

转载于:https://my.oschina.net/Tsybius2014/blog/291687

你可能感兴趣的文章
jdk及tomcat的安装
查看>>
hbase常识及habse适合什么场景
查看>>
JAVA 中一个非常轻量级只有 200k 左右的 RESTful 路由框架
查看>>
2018.8.5 复习笔记
查看>>
【转】 DOTA2中的伪随机及其lua实现
查看>>
A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
查看>>
sys
查看>>
webSQL 实现即时通讯
查看>>
Monkey学习笔记<三>:Monkey脚本编写
查看>>
tomcat监听activemq jms配置
查看>>
页面中引入js的几种方法
查看>>
linux CentOS 系统下如何将php和mysql命令加入到环境变量中
查看>>
python3连接redis
查看>>
android获取用户点击的坐标
查看>>
IT工作十年总结之14个单据通用字段
查看>>
sys.dm_db_wait_stats
查看>>
冲刺阶段站立会议每天任务6
查看>>
BZOJ 5261 Rhyme
查看>>
LINQ
查看>>
1042 Shuffling Machine
查看>>