如何从XML字符串获取DataSet

以往可能从XML文件获取数据集的比较多一些,但是从XML字符串获取DataSet的不是很多,我的想法是:在客户端,用户提交后生成XML字符串,并将这个字符串存到数据库的某个字段,等到我们使用这些XML数据时,只要提取出来,加以分析,显示在不同的Web控件上即可。主要是XmlTextReader的使用。
为方便,下面不涉及数据库(数据库的相关操作省略)。
一:构建一个XML字符串:

创建xml字符串    

 2private string GetStrXML()

 3        {

 4            string strXML = "";

 5            strXML += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

 6            strXML += "<Root>";

 7            strXML += "<DeptName value=\"第一车间\">";

 8            for (int i=0;i<3;i++)

 9            {

10                strXML += "<SendData value=\""+Convert.ToString(Convert.ToInt32(GetQuarterFirstMonth())+i)+"\">";

11                strXML += "<MeltWeight>";

12                strXML += Convert.ToString(i*10 +1);

13                strXML +="</MeltWeight>";

14                strXML += "<FcatUnitHao>";

15                strXML += Convert.ToString(i*10 +2);

16                strXML +="</FcatUnitHao>";

17                strXML += "<JieDian>";

18                strXML += Convert.ToString(i*10 +3);

19                strXML +="</JieDian>";

20                strXML += "<JieyueValue>";

21                strXML += Convert.ToString(i*10 +4);

22                strXML +="</JieyueValue>";

23                strXML += "<Grade>";

24                strXML += Convert.ToString(i+1)+"级";

25                strXML +="</Grade>";

26                strXML += "<Tijijanglv>";

27                strXML += Convert.ToString((i*10 +5)/5)+"%";

28                strXML +="</Tijijanglv>";

29                strXML +="</SendData>";

30            }

31            strXML +="<Leader>";

32            strXML +="<Name>";

33            strXML +="张三丰";

34            strXML +="</Name>";

35            strXML +="<idea>";

36            strXML +="同意";

37            strXML +="</idea>";

38            strXML +="<desp>";

39            strXML +="本次审批通过!  ";

40            strXML +="但是本季度节能比上季度相比,指标有所下降,望各位注意!";

41            strXML +="</desp>";

42            strXML +="<data>";

43            strXML +="2006-04-20";

44            strXML +="</data>";

45

46            strXML +="</Leader>";

47            strXML += "</DeptName>";

48            strXML += "</Root>";

49            return strXML;

50        }



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/teakingxinyig/archive/2008/11/19/3333040.aspx

其中里面有一个GetQuarterFirstMonth()方法,是用来获取当前季度的第一个月份的函数,实际测试中,可以随时替换,所以这个函数不贴出来了,以免扰乱视线,呵.

二.根据XML字符串返回DataSet数据集
      这里XML串直接来自函数GetstrXML(),在实际业务中,我们大都是从数据库中
      获取这个XML字符串的。
//由XML字符串生成DataSet

 2private DataSet GetDataSet()

 3        {

 4            try

 5            {

 6                string text = GetstrXML();

 7                XmlTextReader reader = new XmlTextReader(new StringReader(text));

 8                reader.WhitespaceHandling = WhitespaceHandling.None;//

 9                DataSet ds = new DataSet();

10                ds.ReadXml( reader );//加载XML到DS中

11                reader.Close();

12                ds.Dispose();

13                return ds;

14            }

15            catch(Exception err)

16            {

17                throw new Exception("GetDataSet方法异常:"+err.Message);

18            

19            }

20        }



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/teakingxinyig/archive/2008/11/19/3333040.aspx

三. 从返回的DataSet中选取不同的DataTable绑定到相应的Web控件上
 根据XML字符串的不同,DataSet中将包含多个DataTable,比如我上面的XML字符串,将返回的DataTable有:DeptName,SendData,Leader三个表。
如果绑定的话应该Dataset后面加上DataTable
GridView.DataSource=ds.dataTable["SendData"],不然如果不加DataTabled 的话就显示不出来数据


四. 我的最终效果图:
   三. 从返回的DataSet中选取不同的DataTable绑定到相应的Web控件上
 根据XML字符串的不同,DataSet中将包含多个DataTable,比如我上面的XML字符串,将返回的DataTable有:DeptName,SendData,Leader三个表。


    o_Test.JPG

你可能感兴趣的:(Data)