如何從XML字符串獲取DataSet

以往可能從XML文件獲取數據集的比較多一些,但是從XML字符串獲取DataSet的不是很多,我的想法是:在客戶端,用戶提交後生成XML字符串,並將這個字符串存到數據庫的某個字段,等到我們使用這些XML數據時,只要提取出來,加以分析,顯示在不同的Web控件上即可。主要是XmlTextReader的使用。
爲方便,下面不涉及數據庫(數據庫的相關操作省略)。
一:構建一個XML字符串:

 


 1//創建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        }

其中裏面有一個GetQuarterFirstMonth()方法,是用來獲取當前季度的第一個月份的函數,實際測試中,可以隨時替換,所以這個函數不貼出來了,以免擾亂視線,呵.

二.根據XML字符串返回DataSet數據集
      這裏XML串直接來自函數GetstrXML(),在實際業務中,我們大都是從數據庫中
      獲取這個XML字符串的。

 


 1//由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        }

三.從返回的DataSet中選取不同的DataTable綁定到相應的Web控件上
 根據XML字符串的不同,DataSet中將包含多個DataTable,比如我上面的XML字符串,將返回的DataTable有:DeptName,SendData,Leader三個表。

四.我的最終效果圖:
    o_Test.JPG
五:需要主要的地方
     如果測試時,編譯有問題,請增加相應的引用(廢話).
     using System.Xml;
     using  System.IO;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章