XmlWriter/XmlReader示例代码

本文介绍如何在Silverlight项目中使用XmlWriter和XmlReader进行XML序列化和反序列化,以减小xap包体积。通过示例代码展示了Person类如何转换为XML字符串及从XML字符串中读取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/wangluochong/p/3587499.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值