• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#保存与读取DataTable信息到XML格式的方法

C#保存与读取DataTable信息到XML格式的方法

作者:北风其凉 字体:[增加 减小] 来源:互联网 时间:2017-05-28

北风其凉 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#保存与读取DataTable信息到XML格式的方法。分享给大家供大家参考。具体如下:

这里主要实现:

1.将DataTable中的信息保存到XML中

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

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

/// <summary>
/// 将DataTable的内容写入到XML文件中
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="address">XML文件地址</param>
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;
}

</div>

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

/// <summary>
/// 从XML文件中读取一个DataTable
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="address">XML文件地址</param>
/// <returns></returns>
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;
}

</div>

三、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();
}

</div>

四、程序运行结果

程序运行结果

写入后的XML文件

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28C#使用委托的步骤浅析
  • 2017-05-28VS2015 C#生成dll文件的方法(32/64)
  • 2017-05-28C# Resources资源详解
  • 2017-05-28汉字转拼音软件制件示例(汉字转字母)
  • 2017-05-28C#简单实现显示中文格式星期几的方法
  • 2017-05-28Microsoft Expression Web 简体中文正式版 官方下载地址
  • 2017-05-28c#实现识别图片上的验证码数字
  • 2017-05-28C#实现程序等待延迟执行的方法
  • 2017-05-28C# 如何在MVC3中取消备用控制器的选择
  • 2017-05-28C# ToolStrip制作四边停靠浮动工具栏

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现获取一年中是第几个星期的方法
    • c#使用filesystemwatcher实时监控文件目录的添加和删除
    • C# ListView 点击表头对数据进行排序功能的实现代码
    • C#简单读取、改变文件的创建、修改及访问时间的方法
    • C#接口在派生类和外部类中的调用方法示例
    • C#中常用的正则表达式实例
    • C#实现Xml序列化与反序列化的方法
    • C# null 合并运算符??(双问号)使用示例
    • c#英文单词分类统计示例分享
    • Chrome Visual Studio 2005下的编译过程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有