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读取.

  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/chenying99/p/1989230.html
Copyright © 2011-2022 走看看