本文實例講述了asp.net類序列化生成xml文件的方法。分享給大家供大家參考,具體如下:
根據設計的需求需要開發多個商品的API 原XML文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
< urlset > < url > < loc >http://www.xxxxx.com/todaydetials.aspx?id=143</ loc > < data > < display > < website >愛購114</ website > < siteurl >http://www.xxxxx.com/</ siteurl > < city >杭州</ city > < webSitetitle ></ webSitetitle > < image ></ image > < startTime >2011-2-9</ startTime > < endTime >2011-2-15</ endTime > < value >3880</ value > < price >2088</ price > < rebate >0.53</ rebate > < bought >0</ bought > </ display > </ data > </ url > </ urlset > |
現在需求是要根據數據庫有幾條商品信息 相應的API XML文件出現幾個URL節點! 采用類序列化成XML文件然后讀取相應生成的XML文件就可以展示多個商品XML的信息 實現代碼如下:
首先定義好XML 各個節點的數據及父子節點的關系類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#region 定義數據實體類xml數據結構 public class urlset { public List<url> urlList { get ; set ; } } public class url { public string loc { get ; set ; } public List<data> dataList { get ; set ; } } public class data { public List<display> displayList { get ; set ; } } public class display { public string website { get ; set ; } public string siteurl { get ; set ; } public string city { get ; set ; } public string webSitetitle { get ; set ; } public string image { get ; set ; } public string startTime { get ; set ; } public string endTime { get ; set ; } public double value { get ; set ; } public double price { get ; set ; } public double rebate { get ; set ; } public int bought { get ; set ; } } #endregion |
第二步:#region 定義獲取網站信息實體類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
public class WebSiteInfo { /// <summary> /// 商品標題 /// </summary> public string title { get ; set ; } /// <summary> /// 商品發布時間 /// </summary> public DateTime createtime { get ; set ; } /// <summary> /// 商品圖片 /// </summary> public string productimg { get ; set ; } /// <summary> /// 市場價 /// </summary> public decimal market_price { get ; set ; } /// <summary> /// 團購價 /// </summary> public decimal team_price { get ; set ; } /// <summary> /// 折扣價 /// </summary> public decimal zhekou_price { get ; set ; } /// <summary> /// 城市名稱 /// </summary> public string cityName { get ; set ; } /// <summary> /// 商品開始時間 /// </summary> public DateTime begin_time { get ; set ; } /// <summary> /// 結束時間 /// </summary> public DateTime end_time { get ; set ; } /// <summary> /// 商家名稱 /// </summary> public string merchants_id { get ; set ; } /// <summary> /// 本單詳情 /// </summary> public string description { get ; set ; } /// <summary> /// 最低購買人數 /// </summary> public int lowBuNo { get ; set ; } /// <summary> /// 商家地址 /// </summary> public string Address { get ; set ; } /// <summary> /// 商家電話 /// </summary> public string Telphone { get ; set ; } /// <summary> /// 城市區號 /// </summary> public string cCode { get ; set ; } /// <summary> /// 文件夾名稱 /// </summary> public string folderName { get ; set ; } /// <summary> /// 團購狀態 /// </summary> public string StatusMessage { get ; set ; } /// <summary> /// 現在購買人數 /// </summary> public int nownumber { get ; set ; } /// <summary> /// 商品編號 /// </summary> public int productID { get ; set ; } } #endregion |
第三步:獲取數據庫商品信息記錄并添加到對象的集合中(Arraylist):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#region 獲取xml實體類信息 /// <summary> /// 獲取xml實體類信息 /// </summary> /// <returns></returns> public static ArrayList GetWebModelInfo() { ArrayList list = new ArrayList(); string strSQL = "select a.id, a.merchantsID,a.cCode,a.prodCode,a.statue,a.now_number, a.title,a.createtime,a.productimg,a.market_price,a.team_price,a.zhekou_price,a.cityName,a.begin_time,a.end_time,a.description,a.lowBuyNo,b.Address,b.Tel from tg_product as a left join tg_merchants as b on a.merchantsID=b.merchants_id where a.ispublic=1 and statue>-1 and getdate()<dateadd(day,1,a.end_time) order by a.createtime desc" ; DataSet ds = FrameWork.Data.SqlHelper.ReturnDataSet(CommandType.Text, strSQL, null ); if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { WebSiteInfo webModel = new WebSiteInfo(); //城市名稱 webModel.cityName = dr[ "cityName" ].ToString(); //商品標題 webModel.title = dr[ "title" ].ToString(); //商品創建時間 webModel.createtime = Convert.ToDateTime(dr[ "createtime" ].ToString()); //商家名稱 webModel.merchants_id = dr[ "merchantsID" ].ToString(); //商品圖片 webModel.productimg = dr[ "productimg" ].ToString(); //市場價 webModel.market_price = Convert.ToDecimal(dr[ "market_price" ].ToString()); //團購價 webModel.team_price = Convert.ToDecimal(dr[ "team_price" ].ToString()); //折扣價 webModel.zhekou_price = Convert.ToDecimal(dr[ "zhekou_price" ].ToString()); //開始時間 webModel.begin_time = Convert.ToDateTime(dr[ "begin_time" ].ToString()); //結束時間 webModel.end_time = Convert.ToDateTime(dr[ "end_time" ].ToString()); //商品說明 webModel.description = dr[ "description" ].ToString(); //最低購買數量 webModel.lowBuNo = Convert.ToInt32(dr[ "lowBuyNo" ].ToString()); //商家電話 webModel.Telphone = dr[ "Tel" ].ToString(); //商家地址 webModel.Address = dr[ "Address" ].ToString(); //城市編號 webModel.cCode = dr[ "cCode" ].ToString(); //圖片文件夾名稱 webModel.folderName = dr[ "prodCode" ].ToString(); //現在購買人數 webModel.nownumber = Convert.ToInt32(dr[ "now_number" ].ToString()); //商品編號 webModel.productID = Convert.ToInt32(dr[ "id" ].ToString()); int status = Convert.ToInt32(dr[ "statue" ].ToString()); switch (status) { case 0: webModel.StatusMessage = "結束" ; break ; case 1: webModel.StatusMessage = "成功" ; break ; } list.Add(webModel); } } return list; } #endregion |
最后一步將數據庫讀取來的信息賦值到XML 數據類型中 并序列化成XML文件保存成XML格式的文件讀取文件展現到界面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#region 頁面加載 根據數據庫商品記錄數生成xml文件信息 /// <summary> /// 頁面加載 根據數據庫商品記錄數生成xml文件信息 /// </summary> List<url> urlList = null ; urlset urlsetList = new urlset(); protected void Page_Load( object sender, EventArgs e) { if (!Page.IsPostBack) { ArrayList listinfo=GetWebModelInfo(); urlList = new List<url>(); for ( int i = 0; i < listinfo.Count; i++) { WebSiteInfo webInfo = listinfo[i] as WebSiteInfo; List<display> displayList = new List<display>(); display display = new display(); display.website = "愛購114" ; display.siteurl = "http://www.xxxxx.com/" ; //城市名稱 display.city = webInfo.cityName; //商品標題 display.webSitetitle = webInfo.title; //商品圖片 display.image = "http://211.155.235.30/tuangou/" + webInfo.folderName + "/" + webInfo.productimg; //商品開始時間 display.startTime = webInfo.begin_time.ToShortDateString(); //商品結束時間 display.endTime = webInfo.end_time.ToShortDateString(); //市場價 display.value = Convert.ToDouble(webInfo.market_price); //團購價 display.price = Convert.ToDouble(webInfo.team_price); //折扣價 display.rebate = Convert.ToDouble(webInfo.zhekou_price); //現在購買的人數 display.bought = webInfo.nownumber; displayList.Add(display); List<data> dataList = new List<data>(); data data = new data(); data.displayList = displayList; dataList.Add(data); url url = new url(); url.loc = String.Format( "http://www.xxxxx.com/todaydetials.aspx?id={0}" , webInfo.productID.ToString()); url.dataList = dataList; urlList.Add(url); urlsetList.urlList = urlList; } try { XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces(); xmlns.Add(String.Empty, String.Empty); //構造字符串 StringBuilder sb = new StringBuilder(); //將字符串寫入到stringWriter對象中 StringWriter sw = new StringWriter(sb); //xml序列化對象 typeof(類名) XmlSerializer ser = new XmlSerializer( typeof (urlset)); //把Stream對象和urlset一起傳入,序列化出一個字符串sb ser.Serialize(sw, urlsetList, xmlns); sw.Close(); string FILE_NAME = HttpContext.Current.Server.MapPath( "API/54tuan.xml" ); FileInfo fi = new FileInfo(FILE_NAME); //如果文件己經存在則刪除該文件 if (fi.Exists) { if (fi.Attributes.ToString().IndexOf( "ReadOnly" ) >= 0) { fi.Attributes = FileAttributes.Normal; } File.Delete(fi.Name); } //創建文件 并寫入字符串 using (StreamWriter sWrite = File.CreateText(FILE_NAME)) { sWrite.Write(sb.ToString().Replace( "encoding=/" utf-16/ "" , "encoding=/" utf-8/ "" ).Replace( "<urlList>" , "" ).Replace( "</urlList>" , "" ).Replace( "<dataList>" , "" ).Replace( "</dataList>" , "" ).Replace( "<displayList>" , "" ).Replace( "<displayList>" , "" ).Replace( "</displayList>" , "" )); sWrite.Close(); } //輸出序列化后xml文件 Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/xml" ; Response.WriteFile(HttpContext.Current.Server.MapPath( "API/54tuan.xml" )); Response.Flush(); Response.Close(); } catch (Exception ex) { Response.Write(ex.Message); } finally { } } } #endregion |
希望本文所述對大家asp.net程序設計有所幫助。