惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
博客园 - 司徒正美
J
Java Code Geeks
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
D
Docker
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
腾讯CDC
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
M
MIT News - Artificial intelligence
Jina AI
Jina AI
I
InfoQ
雷峰网
雷峰网
The Cloudflare Blog
美团技术团队
Engineering at Meta
Engineering at Meta

博客园 - jerreychen

常用的JavaScript验证正则表达式 用CSS设置打印换页 使用Form认证实现用户登录 (LoginView的使用) 向容器(PlaceHolder)中动态添加多个用户控件(UserControl) C#.Net中WinForm采用Active Directory进行身份认证 Windows XP 如何设置系统自动关机任务 - jerreychen DataList嵌套GridView实现文章分类列表显示(2) visual studio 2008 sp1中如何让WebBrowser控件可编辑 - jerreychen SQLite 数据库初学 学习笔记 - jerreychen - 博客园 如何将.xsd文件自动生成对象 ASP.NET页面事件:顺序与回传详解 读取自定义的config文件 - jerreychen - 博客园 Umbraco 设置Document Types 的默认值 格式化数据 Net支持gzip 压缩格式 压缩与解压 .net 下,日期的格式化 太久太久没来了,久违了-博客园 showModelDialog 关闭后改变GridView某个单元格的值
.net 序列化数据对象
jerreychen · 2008-03-06 · via 博客园 - jerreychen

.net 序列化数据对象到XML,XML反序列化为对象

呵呵... 直接放代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication2
{
    
public class SimpleSerializer
    
{
        
/// <summary>
        
/// 序列化对象
        
/// </summary>
        
/// <typeparam name="T">对象类型</typeparam>
        
/// <param name="t">对象</param>
        
/// <returns></returns>

        public static string Serialize<T>(T t)
        
{
            
using (StringWriter sw = new StringWriter())
            
{
                XmlSerializer xz 
= new XmlSerializer(t.GetType());
                xz.Serialize(sw, t);
                
return sw.ToString();
            }

        }


        
/// <summary>
        
/// 反序列化为对象
        
/// </summary>
        
/// <param name="type">对象类型</param>
        
/// <param name="s">对象序列化后的Xml字符串</param>
        
/// <returns></returns>

        public static object Deserialize(Type type, string s)
        
{
            
using (StringReader sr = new StringReader(s))
            
{
                XmlSerializer xz 
= new XmlSerializer(type);
                
return xz.Deserialize(sr);
            }

        }

    }

}

申明数据对象,在这里大家是不是和我一样,数据一旦多了,就要老是写get,set很烦
有个简单的方法可以轻松实现,

首先我们申明 private 类型,然后在成员上单击鼠标右键->Refactor->encapsulate  field ... 然后系统会自动生成相应的get,set方法

    [Serializable]
    
public class StockTicker
    
{
        
private string _instrumentType;
        [XmlAttribute]
        
public string InstrumentType
        
{
            
get return _instrumentType; }
            
set { _instrumentType = value; }
        }

        
private string _userSymbol;
        [XmlAttribute]
        
public string UserSymbol
        
{
            
get return _userSymbol; }
            
set { _userSymbol = value; }
        }

        
private int _seq;
        [XmlAttribute]
        
public int Seq
        
{
            
get return _seq; }
            
set { _seq = value; }
        }

        
private int _msgType;
        [XmlAttribute]
        
public int MsgType
        
{
            
get return _msgType; }
            
set { _msgType = value; }
        }

        
private int _bidSize;
        [XmlAttribute]
        
public int BidSize
        
{
            
get return _bidSize; }
            
set { _bidSize = value; }
        }

        
private int _askSize;
        [XmlAttribute]
        
public int AskSize
        
{
            
get return _askSize; }
            
set { _askSize = value; }
        }

    }