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

最新文章

  1. 出现了内部错误-网站中X509Certificate2加载证书时出错
  2. 循序渐进Python3(十二) --2-- &#160;web框架之django简单实现oracle数据库操作
  3. Tomcat启动后快逸报表报错的解决方法
  4. 获取url据对路径写法
  5. Hibernate检索策略
  6. TWaver初学实战——如何在EasyUI中插入TWaver(续)
  7. Java循环语句 while
  8. 【转】高性能服务器架构(High-Performance Server Architecture)
  9. 使用face_recognition批量识别图片中的人数
  10. Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
  11. 如何使用ffmpeg
  12. Xamarin&#160;2017.11.9更新
  13. 实用ExtJS教程100例-005:自定义对话框Ext.MessageBox.show
  14. sort命令的使用,结合uniq, awk等
  15. 详细说明 配置 Sublime Text 开发node.js(windows)包括sub2和sub3的区别
  16. Java并发编程里的volatile。Java内存模型核CPU内存架构的对应关系
  17. PytorchZerotoAll学习笔记(二)--梯度下降之手动求导
  18. HDU.1596 find the safest road (Floyd)
  19. [Linux] 服务器镜像定时备份解决方案 crontab+rsync+flock
  20. svn显示提交人以及时间

热门文章

  1. 团队项目NABCD模型的需求分析
  2. G-nav-04
  3. OC基础--OC中的类方法和对象方法
  4. DVR分布式路由
  5. 学习笔记--博弈组合-SG函数
  6. USACO 3.2 ratios 高斯消元
  7. 洛谷P1136 迎接仪式
  8. java获取每个月的最后一天
  9. H2嵌入式数据库
  10. anr产生的原理&amp;如何避免(android)