zoukankan      html  css  js  c++  java
  • 使用WriteXml,ReadXml序列化反序列化DataTable(转载)

    标签:序列化和反序列化

    本文介绍使用使用WriteXml,ReadXml对DataTable序列化反序列化,同时处理"DataTable 不支持来自 XML 的架构推断。"错误.

    由于DataTable本身就实现了ISerializable, IXmlSerializable接口.所以本身就支持序列化反序列化.

    DataTable是个很好的数据类型

    1.数据库中的表完全对应.

    2.Repleater,DataGrid等控件都支持对它的绑定.

    3.在代码中循环遍历特别方便.

    但为了网络传输,或者离线保存,就需要序列化反序列化为xml.WriteXml,ReadXml就是实现次目的的. 

    一.使用WriteXml序列化DataTable: 

    准备数据: 

    1. create table sitemaps   
    2. (  
    3.     url varchar(255),  
    4.     title varchar(255)  
    5. )  
    6.   
    7. insert sitemaps   
    8. select 'http://www.it118.org', 'it智库网'  
    9. union all  
    10. select 'http://bbs.it118.org', 'it智库网论坛'  

    C#处理代码:

    1. SqlConnection connection = new SqlConnection("Server=localhost;Database=testdb;uid=sa;pwd=sa");  
    2.   
    3. connection.Open();  
    4.   
    5. SqlCommand selectCommand = new SqlCommand(string.Format("SELECT * from sitemaps"), connection);  
    6.   
    7. DataTable dataTable = new DataTable("sitemaps");  //注意table一定需要有tablename
    8. new SqlDataAdapter(selectCommand).Fill(dataTable);  
    9.   
    10. connection.Close();  
    11.   
    12. dataTable.WriteXml("d:\\sitemaps.xml");  

    其中sitemaps.xml:  

    1. <?xml version="1.0" standalone="yes"?>  
    2. <DocumentElement>  
    3.   <sitemaps>  
    4.     <url>http://www.it118.org</url>  
    5.     <title>it智库网</title>  
    6.   </sitemaps>  
    7.   <sitemaps>  
    8.     <url>http://bbs.it118.org</url>  
    9.     <title>it智库网论坛</title>  
    10.   </sitemaps>  
    11. </DocumentElement>  

    二.使用ReadXml序列化DataTable:

    如果代码如下: 

    1. DataTable dt = new DataTable();  
    2. dt.ReadXml("d:\\sitemaps.xml");  

    就会提示:DataTable 不支持来自 XML 的架构推断。

    正确代码如下: 

    1. DataTable dt = new DataTable("sitemaps");  
    2. dt.Columns.Add("url");  
    3. dt.Columns.Add("title");  
    4. dt.ReadXml("d:\\sitemaps.xml");  

    三.应用

    我曾经有特殊需要.在本地使用WriteXml生成xml,传输到别的地方使用ReadXml读取.

  • 相关阅读:
    qemu-img check命令详解
    cinder migrate基础内容-1
    lvm常用指令
    ceph 快照,克隆
    http请求工作流程
    Python 生成二维码
    python 往 elasticsearch 存入数据时,文档字段类型问题注意事项
    python 往 elasticsearch 存入数据,然后通过kinaba 检索分析
    git 删除某次提交
    git 强制回滚【覆盖】远程 源码库
  • 原文地址:https://www.cnblogs.com/chenying99/p/1989230.html
Copyright © 2011-2022 走看看