类、变量常用头:

[XmlRootAttribute]:对根节点的描述,在类声明中使用 如:下例的Html类

[XmlType]:对节点描述,在类声明中使用             如:下例的Head类

[XmlElement]:节点下内部节点描述,如果对数组标识,是对数组单元描述    如:下例的Html.body,Head.title,Head.metas和Head.scripts数组...

[XmlAttribute]:节点下内部属性描述                          如:下例的Meat.httpequiv,Meat.content,Script.src,Script.type,...

[XmlArrayItem]:数组单元项描述                              如:下例的Body.lis

[XmlArray]:数组描述                                             如:下例的Body.lis

[XmlIgnore]:使该项不序列化             如:下例的Meta.data

[XmlText]:做为节点的text文本输出          如:下例的Script.content,Li.Content...

例如:

类定义代码

 1 using System;
2 using System.Xml.Serialization;
3
4 [XmlRootAttribute("html")]
5 public class Html
6 {
7 public Head head { get; set; }
8
9 [XmlElement("body")]
10 public Body body { get; set; }
11 }
12
13 [XmlType("head")]
14 public class Head
15 {
16 [XmlElement("title")]
17 public string titile;
18
19 [XmlElement("meta")]
20 public Meta[] metas;
21
22 [XmlElement("script")]
23 public Script[] scripts;
24 }
25
26 /// <summary>
27 /// http-equiv="Content-Type" content="text/html; charset=utf-8"
28 /// </summary>
29 public class Meta
30 {
31 [XmlAttribute("http-equiv")]
32 public string httpEquiv;
33
34 [XmlAttribute]
35 public string content;
36
37 [XmlIgnore]
38 public string data;
39 }
40
41 /// <summary>
42 /// script src="/script/common.js" type="text/javascript"
43 /// </summary>
44 public class Script
45 {
46 [XmlAttribute]
47 public string src;
48 [XmlAttribute]
49 public string type;
50
51 [XmlText]
52 public string content;
53 }
54
55 public class Body
56 {
57 [XmlElement("table")]
58 public List<Table> tables=new List<Table>();
59
60 [XmlArray("ui")]
61 [XmlArrayItem("li")]
62 public List<Li> Lis = new List<Li>();
63 }
64
65 public class Li
66 {
67 [XmlText]
68 public string content;
69 }
70
71 public class Table
72 {
73 [XmlAttribute]
74 public string height;
75 [XmlAttribute]
76 public string width;
77
78 [XmlText]
79 public string content;
80 }

序列化

 1  System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Html));
2 Html html = new Html();
3 Head head = new Head();
4 head.title = "这是一个示例";
5 Meta[] metaArray = new Meta[1];
6 metaArray[0] = new Meta() { httpEquiv = "Content-Type", content = "text/html; charset=utf-8", data="该数据不被序列化" };
7 Script[] scriptArray = new Script[2];
8 scriptArray[0] = new Script() { type = "text/javascript", src = "/script/jquery.js" };
9 scriptArray[1] = new Script() { type = "text/javascript", content = "var number=6; alert('这是一个示例number='+number);" };
10 head.metas = metaArray;
11 head.scripts = scriptArray;
12 Body body = new Body();
13 body.tables.Add(new Table() { height = "5", width = "4", content = "这是table1" });
14 body.tables.Add(new Table() { content = "这是table2" });
15 body.Lis.Add(new Li() { content = "li1" });
16 body.Lis.Add(new Li() { content = "li2" });
17 html.head = head;
18 html.body = body;
19 string serializerString = "";
20 using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
21 {
22 System.IO.TextWriter writer = new System.IO.StreamWriter(stream, Encoding.UTF8);
23 System.Xml.Serialization.XmlSerializerNamespaces ns = new System.Xml.Serialization.XmlSerializerNamespaces();
24 ns.Add("", "");//不输出xmlns
25 serializer.Serialize(writer, html, ns);
26 stream.Position = 0;
27 byte[] buf = new byte[stream.Length];
28 stream.Read(buf, 0, buf.Length);
29 serializerString= System.Text.Encoding.UTF8.GetString(buf);
30 }

serializerString值为:

<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title>这是一个示例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="/script/jquery.js" type="text/javascript" />
<script type="text/javascript">var number=6; alert('这是一个示例number='+number);</script>
</head>
<body>
<table height="5" width="4">这是table1</table>
<table>这是table2</table>
<ui>
<li>li1</li>
<li>li2</li>
</ui>
</body>
</html>

学习C# XmlSerializer 序列化反序列化XML的更多相关文章

  1. C# 序列化反序列化XML的帮助类

    以下是一个包装的用于序列化反序列化XML和C# 对象的类.  public class XmlSerializeHelper<T>     {         #region Serial ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  4. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  5. XML序列化反序列化—常用类

    public class XMLSerializer    {        #region (public) xml序列化        /// <summary>        /// ...

  6. C# XML序列化/反序列化参考

    .NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...

  7. 在.net中序列化读写xml方法的总结--转载过来学习学习

    原文章地址:http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 首先做个大概的总结,XML包括的元素有XmlElement,X ...

  8. 对类参数的序列化和反序列化XML

    /// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// < ...

  9. XML序列化反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...

随机推荐

  1. Seventh scrum meeting - 2015/11/1

    新的一月开始了!今天是周末,所以大家的开发进度有点减慢,享受一个愉快的周末~ 今天大家的开发都没有遇到什么问题,因为这几天下来,大家对android的开发流程都比较熟悉了,暂时不会遇到新的问题了. 我 ...

  2. rails获取json内容

    文章是从我的个人博客上粘贴过来的, 大家也可以访问 www.iwangzheng.com url点开后的json是这样的 { e:   { provider: ”searches.soku.top”, ...

  3. [BZOJ1163][BZOJ1339][Baltic2008]Mafia

    [BZOJ1163][BZOJ1339][Baltic2008]Mafia 试题描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用 ...

  4. php页面打开响应时间

    $start_time = array_sum(explode(' ',microtime())); //your code here   $end_time = array_sum(explode( ...

  5. sort如何按指定的列排序

    <1>[root@localhost company]# cat test 06d7            145             4192542506e1            ...

  6. Python操作Mysql实例代码教程在线版(查询手册)

    本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐   实 ...

  7. 猪八戒吃西瓜(wmelon)-排序-查找

    问题 A: 猪八戒吃西瓜(wmelon) 时间限制: 1 Sec  内存限制: 64 MB提交: 30  解决: 14[提交][状态][讨论版] 题目描述 有一天,贪吃的猪八戒来到了一个大果园,果园里 ...

  8. POJ 1006 - Biorhythms (中国剩余定理)

    B - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Subm ...

  9. ubuntu修改文件访问权限

    遇到“bash .....权限不够”的问题时, 从控制台进入到那个文件夹 chmod 777 * -R 全部子目录及文件权限改为 777

  10. Diskpart命令安装系统小结

    <diskpart命令安装系统小结> 今天给同学安装系统,win8改win7.同学是预装了win8的联想y480,分区表采用的是GPT格式,捣鼓了半天才知道.GPT格式是新式的分区格式,相 ...