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;
            

        }

        
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Python3 与 C# 基础语法对比(String专栏-新排版)

在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master

13420
来自专栏一个会写诗的程序员的博客

《Kotin 极简教程》第7章 面向对象编程(OOP)(2)《Kotlin极简教程》正式上架:

在上面的代码中,我们通过向注解类添加元注解(meta-annotation)的方法来指定其他属性:

17020
来自专栏码匠的流水账

聊聊sentinel的SentinelResourceAspect

com/alibaba/csp/sentinel/annotation/aspectj/SentinelResourceAspect.java

29820
来自专栏机器学习算法与Python学习

pyhton-----break语句

Python break语句,就像在C语言中,打破了最小封闭for或while循环。break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完...

30450
来自专栏恰童鞋骚年

剑指Offer面试题:26.字符串的排列

  我们可以把一个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。在下图中,我们用两种不同的背景颜色区分字符串的两部分。

9110
来自专栏恰童鞋骚年

剑指Offer面试题:4.从尾到头打印链表

  到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出...

10940
来自专栏chenssy

【死磕 Spring】—– IOC 之构造函数实例化 bean

createBeanInstance() 用于实例化 bean,它会根据不同情况选择不同的实例化策略来完成 bean 的初始化,主要包括:

14840
来自专栏about云

Scala的map实现key和value排序及各种排序比较等知识讨论

问题导读 1.map能否直接排序? 2.如何转换,才能排序? 3.排序结果可以存储在哪两个集合中? 4._*如何使用? 5.排序函数中,哪个可以进行升序和降序...

40480
来自专栏c#开发者

lightswitch conditional formatting change color

BTW, the best way to do a conditional color setting in LS beta 2 is to use the n...

29350
来自专栏菩提树下的杨过

java:POI导出excel

POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1、maven中先添加依赖项 1 ...

35850

扫码关注云+社区

领取腾讯云代金券