在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;
              
  
        }
  
          
    }
}

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

  1. 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token

    1. 场景 根据OAuth 2.0规范,该场景发生于下面的流程图中的(D)(E)节点,根据已经得到的authorization code获取access token. 2. 实现环境 DotNetOp ...

  2. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

  3. ActiveMQ笔记(1):编译、安装、示例代码

    一.编译 虽然ActiveMQ提供了发布版本,但是建议同学们自己下载源代码编译,以后万一有坑,还可以尝试自己改改源码. 1.1 https://github.com/apache/activemq/r ...

  4. C#微信公众平台接入示例代码

    http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 这是微信公众平台提供的接入指南.官网只提供了php的示例代码 ...

  5. 编译opengl编程指南第八版示例代码通过

    最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...

  6. 股票数据调用示例代码php

    <!--?php // +---------------------------------------------------------------------- // | JuhePHP ...

  7. php示例代码之类似于C#中的String.Format方法

    php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equ ...

  8. redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一.Jedis的使用 <dependency> <groupId>redi ...

  9. 正则表达式学习笔记(附:Java版示例代码)

    具体学习推荐:正则表达式30分钟入门教程 .         除换行符以外的任意字符\w      word,正常字符,可以当做变量名的,字母.数字.下划线.汉字\s        space,空白符 ...

随机推荐

  1. JQuery ztree 异步加载实践

    本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...

  2. SQL的主键和外键

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  3. 三维数组——与 宝玉QQ群讨论交流之二

    宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...

  4. java多线程-BlockingQueue

    BlockingQueue简介 ArrayBlockingQueue:基于数组实现的一个阻塞队列,在创建ArrayBlockingQueue对象时必须制定容量大小.并且可以指定公平性与非公平性,默认情 ...

  5. UML 几种关系的理解

    1,泛化关系 泛化关系的表现形式有3中,类A 集成类B  ,接口C  继承 接口D ,或者类E实现类F. 2,组合关系 组合关系描述的是整体与局部的关系,一个整体有很多部分组成,即整体包含的部分. 例 ...

  6. Linux安装卸载JDK(1.7 rpm)

    一.卸载系统已有的JDK 1.查看已安装的jdk rpm -qa|grep jdk   2.卸载jdk rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66. ...

  7. Struts2的使用以及Spring整合Struts2

    一.如何单独使用Struts2 (1)引入struts2的jar包 commons-fileupload-1.2.1.jar freemarker-2.3.15.jar ognl-2.7.3.jar ...

  8. No message found under code ' for locale 'en'.

    1.如果你使用eclipse创建的工程是class和src分开的,那么资源属性文件一定要放在src目录以内.2.属性文件名的写法:messages_zh_CN.properties (中文)messa ...

  9. TYVJ1000 A+B problem [存个高精模板]

    A+B Problem! 通过模拟我故乡非洲的计算方式,我们很快可以解决这道题. #include<iostream> #include<cstdio> #include< ...

  10. 如何在 Ubuntu 14.04 里面配置 chroot 环境

    你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 Linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 Linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我 ...