如今在面向对象和XML盛行的时代,能够很好的发挥二者的特长,并协调合作,未来的网络结构和网络开发的模式将会有质的改变。网络开发将逐步的走向系统化、模块化、精尖化。所以呢,能够很好的运用好这些新的东西对于我们从事网络开发的人很重要。这是一个简单的小例子,实现了对象转化为XML。如果欠缺之处,希望大家批评指正。
前台调用:
相关的实体类:
前台调用:
1using System;
2using Bmc;
3
4public partial class _Default : System.Web.UI.Page
5{
6 protected void btnSerializer_Click(object sender, EventArgs e)
7 {
8 Comment firstComment = new Comment();
9 firstComment.ID = 1;
10 firstComment.userName = "first";
11 Comment secondComment = new Comment();
12 secondComment.userName = "second";
13 secondComment.ID = 2;
14
15 CommentArray commentArray = new CommentArray();
16 commentArray.Set(firstComment);
17 commentArray.Set(secondComment);
18
19 System.Type type = typeof(CommentArray);
20 SerializaObject.Serializa(Server.MapPath("~/1.XML"), type, commentArray);
21 }
22}
23
具体操作类:2using Bmc;
3
4public partial class _Default : System.Web.UI.Page
5{
6 protected void btnSerializer_Click(object sender, EventArgs e)
7 {
8 Comment firstComment = new Comment();
9 firstComment.ID = 1;
10 firstComment.userName = "first";
11 Comment secondComment = new Comment();
12 secondComment.userName = "second";
13 secondComment.ID = 2;
14
15 CommentArray commentArray = new CommentArray();
16 commentArray.Set(firstComment);
17 commentArray.Set(secondComment);
18
19 System.Type type = typeof(CommentArray);
20 SerializaObject.Serializa(Server.MapPath("~/1.XML"), type, commentArray);
21 }
22}
23
1using System;
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10using System.IO;
11using System.Xml.Serialization;
12
13/// <summary>
14/// Summary description for Serializer
15/// </summary>
16public class SerializaObject
17{
18 public SerializaObject()
19 {
20 //
21 // TODO: Add constructor logic here
22 //
23 }
24 /// <summary>
25 /// serilia
26 /// </summary>
27 /// <param name="filePath"></param>
28 /// <param name="objectType"></param>
29 /// <param name="nObject"></param>
30 /// <returns></returns>
31 public static bool Serializa(string filePath,Type objectType,object nObject)
32 {
33 FileStream fileStream = new FileStream(@filePath, FileMode.Create);
34 XmlSerializer serializer = new XmlSerializer(objectType);
35 try
36 {
37 serializer.Serialize(fileStream, nObject);
38 return true;
39 }
40 catch(Exception ex)
41 {
42 throw ex;
43 }
44 finally
45 {
46 fileStream.Close();
47 }
48 }
49}
50
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10using System.IO;
11using System.Xml.Serialization;
12
13/// <summary>
14/// Summary description for Serializer
15/// </summary>
16public class SerializaObject
17{
18 public SerializaObject()
19 {
20 //
21 // TODO: Add constructor logic here
22 //
23 }
24 /// <summary>
25 /// serilia
26 /// </summary>
27 /// <param name="filePath"></param>
28 /// <param name="objectType"></param>
29 /// <param name="nObject"></param>
30 /// <returns></returns>
31 public static bool Serializa(string filePath,Type objectType,object nObject)
32 {
33 FileStream fileStream = new FileStream(@filePath, FileMode.Create);
34 XmlSerializer serializer = new XmlSerializer(objectType);
35 try
36 {
37 serializer.Serialize(fileStream, nObject);
38 return true;
39 }
40 catch(Exception ex)
41 {
42 throw ex;
43 }
44 finally
45 {
46 fileStream.Close();
47 }
48 }
49}
50
相关的实体类:
1using System;
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Collections.Generic;
6
7namespace Bmc
8{
9 /// <summary>
10 /// 评论Comment类,主要方法,可以实现Comment对象的:添加、删除、查看
11 /// </summary>
12 [Serializable]
13 public class Comment
14 {
15 /// <summary>
16 /// Global_ID
17 /// </summary>
18 public int ID;
19 /// <summary>
20 /// 用户名或者昵称
21 /// </summary>
22 public string userName;
23 /// <summary>
24 /// 编辑时间
25 /// </summary>
26 public DateTime EditTime;
27 /// <summary>
28 /// 状态
29 /// </summary>
30 public int states;
31 /// <summary>
32 /// Normal
33 /// </summary>
34 public const int StatusNormal = 1;
35 /// <summary>
36 /// Deleted
37 /// </summary>
38 public const int StatusDeleted = 0;
39 /// <summary>
40 /// Table Name
41 /// </summary>
42 public const string tableName = "T_Comment";
43 /// <summary>
44 /// 初始化
45 /// </summary>
46 public Comment()
47 {
48 userName = "游客";
49 states = StatusNormal;
50 EditTime = System.DateTime.Now;
51 }
52 }
53 [Serializable]
54 public class CommentArray
55 {
56 /// <summary>
57 /// Comment Array
58 /// </summary>
59 public System.Collections.Generic.List<Comment> iArray;
60 /// <summary>
61 /// Initial
62 /// </summary>
63 public CommentArray()
64 {
65 iArray = new List<Comment>();
66 }
67 /// <summary>
68 /// Set Value
69 /// </summary>
70 /// <param name="iComment"></param>
71 public void Set(Comment iComment)
72 {
73 iArray.Add(iComment);
74 }
75 /// <summary>
76 /// Remove Value From Comment Array
77 /// </summary>
78 public void Remove(Comment iComment)
79 {
80 iArray.Remove(iComment);
81 }
82 }
83
84}
运行结果: 注意:最开始的XML说明缺少了encoding="utf-8"?
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Collections.Generic;
6
7namespace Bmc
8{
9 /// <summary>
10 /// 评论Comment类,主要方法,可以实现Comment对象的:添加、删除、查看
11 /// </summary>
12 [Serializable]
13 public class Comment
14 {
15 /// <summary>
16 /// Global_ID
17 /// </summary>
18 public int ID;
19 /// <summary>
20 /// 用户名或者昵称
21 /// </summary>
22 public string userName;
23 /// <summary>
24 /// 编辑时间
25 /// </summary>
26 public DateTime EditTime;
27 /// <summary>
28 /// 状态
29 /// </summary>
30 public int states;
31 /// <summary>
32 /// Normal
33 /// </summary>
34 public const int StatusNormal = 1;
35 /// <summary>
36 /// Deleted
37 /// </summary>
38 public const int StatusDeleted = 0;
39 /// <summary>
40 /// Table Name
41 /// </summary>
42 public const string tableName = "T_Comment";
43 /// <summary>
44 /// 初始化
45 /// </summary>
46 public Comment()
47 {
48 userName = "游客";
49 states = StatusNormal;
50 EditTime = System.DateTime.Now;
51 }
52 }
53 [Serializable]
54 public class CommentArray
55 {
56 /// <summary>
57 /// Comment Array
58 /// </summary>
59 public System.Collections.Generic.List<Comment> iArray;
60 /// <summary>
61 /// Initial
62 /// </summary>
63 public CommentArray()
64 {
65 iArray = new List<Comment>();
66 }
67 /// <summary>
68 /// Set Value
69 /// </summary>
70 /// <param name="iComment"></param>
71 public void Set(Comment iComment)
72 {
73 iArray.Add(iComment);
74 }
75 /// <summary>
76 /// Remove Value From Comment Array
77 /// </summary>
78 public void Remove(Comment iComment)
79 {
80 iArray.Remove(iComment);
81 }
82 }
83
84}
1<?xml version="1.0"?>
2<CommentArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3 <iArray>
4 <Comment>
5 <ID>1</ID>
6 <userName>first</userName>
7 <EditTime>2007-11-07T18:27:33.15625+08:00</EditTime>
8 <states>1</states>
9 </Comment>
10 <Comment>
11 <ID>2</ID>
12 <userName>second</userName>
13 <EditTime>2007-11-07T18:27:33.15625+08:00</EditTime>
14 <states>1</states>
15 </Comment>
16 </iArray>
17</CommentArray
改进办法:使用指定的 TextWriter 序列化指定的 Object 并将 XML 文档写入文件。 2<CommentArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3 <iArray>
4 <Comment>
5 <ID>1</ID>
6 <userName>first</userName>
7 <EditTime>2007-11-07T18:27:33.15625+08:00</EditTime>
8 <states>1</states>
9 </Comment>
10 <Comment>
11 <ID>2</ID>
12 <userName>second</userName>
13 <EditTime>2007-11-07T18:27:33.15625+08:00</EditTime>
14 <states>1</states>
15 </Comment>
16 </iArray>
17</CommentArray
1 /// <summary>
2 /// Serializa,这个加入了xml的编码规则UTF8
3 /// </summary>
4 /// <param name="filePath"></param>
5 /// <param name="objectType"></param>
6 /// <param name="nObject"></param>
7 /// <returns></returns>
8 public static bool Serializa(string filePath, Type objectType, object nObject)
9 {
10 FileStream fileStream = new FileStream(@filePath, FileMode.Create);
11 TextWriter writer = new StreamWriter(fileStream, new UTF8Encoding());
12 XmlSerializer serializer = new XmlSerializer(objectType);
13 try
14 {
15 serializer.Serialize(writer, nObject);
16 return true;
17 }
18 catch (Exception ex)
19 {
20 throw ex;
21 }
22 finally
23 {
24 writer.Close();
25 }
26 }
2 /// Serializa,这个加入了xml的编码规则UTF8
3 /// </summary>
4 /// <param name="filePath"></param>
5 /// <param name="objectType"></param>
6 /// <param name="nObject"></param>
7 /// <returns></returns>
8 public static bool Serializa(string filePath, Type objectType, object nObject)
9 {
10 FileStream fileStream = new FileStream(@filePath, FileMode.Create);
11 TextWriter writer = new StreamWriter(fileStream, new UTF8Encoding());
12 XmlSerializer serializer = new XmlSerializer(objectType);
13 try
14 {
15 serializer.Serialize(writer, nObject);
16 return true;
17 }
18 catch (Exception ex)
19 {
20 throw ex;
21 }
22 finally
23 {
24 writer.Close();
25 }
26 }
改进后的结果:
1<?xml version="1.0" encoding="utf-8"?>
2<CommentArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3 <iArray>
4 <Comment>
5 <ID>1</ID>
6 <userName>first</userName>
7 <EditTime>2007-11-07T18:55:41.9375+08:00</EditTime>
8 <states>1</states>
9 </Comment>
10 <Comment>
11 <ID>2</ID>
12 <userName>second</userName>
13 <EditTime>2007-11-07T18:55:41.9375+08:00</EditTime>
14 <states>1</states>
15 </Comment>
16 </iArray>
17</CommentArray>
2<CommentArray xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3 <iArray>
4 <Comment>
5 <ID>1</ID>
6 <userName>first</userName>
7 <EditTime>2007-11-07T18:55:41.9375+08:00</EditTime>
8 <states>1</states>
9 </Comment>
10 <Comment>
11 <ID>2</ID>
12 <userName>second</userName>
13 <EditTime>2007-11-07T18:55:41.9375+08:00</EditTime>
14 <states>1</states>
15 </Comment>
16 </iArray>
17</CommentArray>