XmlWriter/XmlReader示例代码

在Silverlight项目中,如果您想最大程度的减少xap包的大小,仅使用默认System.Xml命名空间下提供的功能来实现“XML序列化/反序列化”,恐怕XmlReader/XmlWriter将成为唯一选择了,下面是示例代码:

using System.IO;
using System.Text;
using System.Xml;

namespace slLib
{
    public class Person
    {
        private string _name = "";

        /// <summary>
        /// 姓名
        /// </summary>
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        private int _age = 0;

        /// <summary>
        /// 年龄
        /// </summary>
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }

        /// <summary>
        /// 将Person实例转化为xml字符串
        /// </summary>
        /// <returns></returns>
        public string ToXmlString()
        {
            MemoryStream ms = new MemoryStream();
            XmlWriter writer = XmlWriter.Create(ms);

            writer.WriteStartDocument();
                writer.WriteStartElement("data");
                    writer.WriteStartElement("person");                      

                        writer.WriteStartElement("name");
                            writer.WriteAttributeString("type", "String");
                            writer.WriteValue(this.Name);
                        writer.WriteEndElement();

                        writer.WriteStartElement("age");
                            writer.WriteAttributeString("type", "Int32");
                            writer.WriteValue(this.Age);
                        writer.WriteEndElement();

                    writer.WriteEndElement();
                writer.WriteEndElement();
            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();
            byte[] bytes = ms.ToArray();
            string result = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
            return result;
        }

        /// <summary>
        /// 从xml字符串给Person实例属性赋值
        /// </summary>
        /// <param name="xmlString"></param>
        public void FromXmlString(string xmlString)
        {
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xmlString));
            XmlReader reader = XmlReader.Create(ms);

            reader.Read();
            reader.ReadStartElement("data");
                reader.ReadStartElement("person");
                    string nameType = reader.GetAttribute("type");
                    string nameValue = reader.ReadElementContentAsString();
                    string ageType = reader.GetAttribute("type");
                    int ageValue = reader.ReadElementContentAsInt();
                reader.ReadEndElement();
            reader.ReadEndElement();
            reader.Close();

            this._name = nameValue;
            this._age = ageValue;

        }

    }
}
时间: 2024-09-17 03:41:21

XmlWriter/XmlReader示例代码的相关文章

《unix设备驱动》块设备驱动程序(加示例代码)

块设备驱动程序 一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备. 块驱动程序是在核心内存和其他存储介质之间的管道,因此他们可以认为是虚拟内存子系统的组成部分.   一些概念 一个数据块指的是固定大小的数据,而大小的值有内核决定  与数据块对应的是扇区,它是由底层硬件决定大小的一个块.  无论何时内核向用户提供一个扇区编号,该扇区的大小就是512字节. 注册 注册的目的:使内核知道设备的存在 注册块设备驱动程序 注册到内核 int register_blkdev(unsigned in

php分页函数示例代码分享

 这篇文章主要介绍了php分页函数示例代码,需要的朋友可以参考下 分享一例php分页函数代码,用此函数实现分页代码很不错.   代码,php分页函数.  代码如下: <?php /* * Created on 2011-07-28 * Author : LKK , http://lianq.net * 使用方法: require_once('mypage.php'); $result=mysql_query("select * from mytable", $myconn); $

ASP生成静态首页的示例代码

简单点的,ASP生成静态首页的示例代码 <% dim objXmlHttp,binFileData,objAdoStream set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP") objXmlHttp.open "GET","http://"&request.ServerVariables("HTTP_HOST")&"/index1.

asp内置函数formatdatetime使用示例代码

asp内置函数formatdatetime使用示例代码 formatdatetime(now(),0) '则返回2004-10-18 11:45:53   formatdatetime(now(),1) '则返回2004年10月18日   formatdatetime(now(),2) '则返回2004-10-18   formatdatetime(now(),3) '则返回11:47:12   formatdatetime(now(),4) '则返回11:47   weekDayName(we

FileSystemObject 示例代码

filesystemobject|示例 在本节描述的示例代码,提供真实的例子来示范在 FileSystemObject 对象模式中可用的许多功能.该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能. 请注意,由于该代码是极一般的,所以要使该代码能够真正在您的机器上运行,可能需要一些其他代码和小小的变更.这些改变之所以必要,是因为在 Active Server Pages 和 Windows Scripting Host 之间,为输入和输出给用户采用了不同的方法

ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充)

asp.net|示例|刷新|无刷新|页面 原文请见Leon.Zhou的:http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html 下载了示例代码,并转换成VB了,AJAX功能测试成功.但遇到些小问题:Demo1很正常.Demo2按Leon原来的写法testAJAX.aspx.vb中Line 22不成功.所以我直接在IDE环境中,修改button3的OnClientClick属性,见testAJAX.asp的Line 52.测试成功.Demo

树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过)

示例|数据|显示 树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过) SELECT DeptCode1 + DeptCode2 + DeptCode3 AS dpcode,       CASE WHEN deptname2 = '' THEN deptname1 WHEN deptname2 <> '' AND       deptname3 = '' THEN DeptName1 + '\' + DeptName2 WHEN deptname2 <> '

FSO系列之六**示例代码之准备工作

fso|示例 在以下的示例代码,提供真实的例子来示范在 FileSystemObject 对象模式中可用的许多功能.该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能. 请注意,由于该代码是极一般的,所以要使该代码能够真正在您的机器上运行,可能需要一些其他代码和小小的变更.这些改变之所以必要,是因为在 Active Server Pages 和 Windows Scripting Host 之间,为输入和输出给用户采用了不同的方法. 要在 Active Ser

Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)

asp.net|示例|下载|压缩 (一). 实现功能    对文件及目录的压缩及解压功能(二). 运行图片示例  (三).代码    1. 压缩类     1/**//// <summary>  2/// 压缩类  3/// </summary>  4public class ZipClass  5{     6    public static void ZipFile(string FileToZip, string ZipedFile, int CompressionLeve