博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataSet 到xml文件或字节数组的互换

Posted on 2007-10-16 17:13  jisen  阅读(1372)  评论(4编辑  收藏  举报

在项目中遇到一个模块,需要实现功能:

第一个功能要求是有一个甘特图显示模块A,显示的项目中的每个工作的进度以及该工作的其他基本信息,

����ͼ3.GIF


模块的另外一个功能要求是模块管理人员要一个配置模块
B,通过B来设置A的显示方式,
干特图4.GIF

包括设置数据源,显示字段,以及在数据源的基础上进行过滤,显示甘特图的颜色以及每个甘特条上显示的文字信息, 甘特条的高度,哪两个字段表示时间字段(计划)等一些将来用户提出的额外显示功能。

刚开始的时候是是这样考虑,把每种样式对应一个数据库字段,但是很快就发现这样不行,一是数据源不定,数据项也不定,二是经常要改动显示的信息,所以就想把样式用一个xml来保存,用一张表来保存一些类似的样式,不同的信息样式用不同的表来区分并保存,然后把这些表添加到一个DataSet中转换为xml文件,以后用户需要添加额外的信息,在配置工具B中添加相应得Table即可,对之前的工作不用做任何修改。在显示甘特图的时候,读取数据和数据显示样式可能会比较好,因为从xml文件读取也比较方便。至于样式数据怎么保存到数据库,可以直接从DataSet到字节数组进行转换,也可以借助临时生成xml文件,再转换成字节数组。 

 

这样就遇到DataSet xml文件或字节数组的互换的问题,

企业库提供了转换的方法,这里做一个小结

1.DataSetxml文件或字节数组的转换

DataSetWriteXml方法有很多重载,

总的来讲,从DataSetxml的转换分为4

DataSet  --- xml

        --- stream      abstract class

        --- textwriter  [Serializable]public abstract class TextWriter 
        --- xmlwriter  public abstract class XmlWriter

m_Ds.WriteXml(输出类型);

m_Ds.WriteXml(输出类型,XmlWriteMode.DiffGram);

XmlWriteMode参数信息

DiffGram:DataSet修改的原值以及新值

IgnoreSchema:数据

WriteSchema:结构+数据

 

2.xml文件或字节数组到DataSet转换

这个过程是DataSet到文件或字节数组转换的逆过程

文件或二进制数据到DataSet的转换前提是文件或字节数组应该是符合标准的,也是主要从4个类型转换

 xml          ---  DataSet

 stream      

 textreader  

 xmlreader

m_Ds.ReadXml(读入类型);

m_Ds.ReadXml(读入类型,System.Data.XmlReadMode.IgnoreSchema);

System.Data.XmlReadMode参数详细信息请参阅MSDN.

 

 

我在处理的时候是这样用的:

DataSet--------------〉字节数组


+


保存字节数组到数据库省略

 

字节数组------------DataSet

从数据库读取字节数组(_sStyleInfo)省略

+

 

因为之前对C#来解析一些不规则的xml文档,我自己还没有实践过,觉得.Net提供的DataSet功能挺方便的。以上是自己的体会,有欠缺的地方,还请各位指点。