整理一下 .net 对象序列化注意事项:

1. 字段:必须是 public类型

2.属性:只读或者只写的属性不被序列化,只有 可读可写并且赋值的才可以

序列化:

Someclass obj = new SomeClass();

XmlSerializer ser = new XmlSerializer(typeof(Someclass));

StreamWriter writer = new StreamWriter("ser.xml");

ser.Serialize(writer, obj);

writer.Close();

反序列化

FileStream fs = new FileStream("ser.xml", FileMode.Open);

Someclass newObj = (Someclass)ser.Deserialize(fs);

fs.Close();

对于数组亦可,只需将SomeClass换成SomeClass[]即可。

关于在WCF中的序列化

json:DataContractJsonSerializer支持使用以JavaScript 对象标记作为序列化格式

using System.Runtime.Serialization.Json;

Employee e = new Employee(101, "Daniel", "Dong");FileStream writer = new FileStream("sample.xml", FileMode.Create);DataContractJsonSerilizer ser = new DataContractJsonSerilizer(typeof(Employee));ser.Serialize(writer, e);writer.Close();

View Code

序列化Employee类的结果

{"Employee":101, "FirstName":"Daniel", "LastName":"Dong"}

xml: 主要讲两种

DataContractSerializer(作为默认的序列化基础方法因为它是WCF的初始序列化结构)、

XmlSerializer(如果你需要支持已有的类型或者自定义序列化而且它们不被DataContractSerializer支持的话,你可能想要使用XmlSerializer.)

Demo: xmlSerializer

using System.Xml.Serialization;

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Xml.Serialization;using System.Diagnostics;namespace Chinaer.WcfDemo.ConsoleClient{class Program{static void Main(string[] args){Person person = new Person(){Age = 12,UserPwd = "21",UserName = "郭志奇",Date = DateTime.Now};using (XmlWriter writer = new XmlTextWriter("person.xml", Encoding.UTF8)){XmlSerializer serializer = new XmlSerializer(typeof(Person));serializer.Serialize(writer, person);}Process.Start("person.xml");Console.Read();}/// <summary>/// 序列化方法/// </summary>/// <typeparam name="T"></typeparam>/// <param name="instace"></param>/// <param name="fileName"></param>public static void Serialize<T>(T instace, string fileName){using (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8)){XmlSerializer serializer = new XmlSerializer(typeof(T));serializer.Serialize(writer, instace);}Process.Start(fileName);}}[XmlRoot(ElementName="guozhiqi",Namespace="http://www.guozhiqi.com")]/// <summary>/// 定义一个实体类 Person/// </summary>public class Person{private Guid _id;private DateTime _date;//注意我们没有默认的构造函数internal double Age { get; set; } //私有字段 年龄/// <summary>/// 通过XmlAttributeAttribute 序列化成xml属性/// </summary>[XmlAttribute(AttributeName="GuidID",Namespace="http://guidID")]public Guid ID{get { return _id; }set{_id = value;}} //公有的随机数[XmlElement(ElementName="DateTime",Namespace="http://date")]public DateTime Date{set{_date = value;}get{return _date;}}public string UserName { get; set; }public string UserPwd { get; set; }public Person() { }public Person(double age, Guid id){this.Age = age;}}}

View Code

序列化结果:

<?xml version="1.0" encoding="utf-8"?><guozhiqi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"d1p1:GuidID="00000000-0000-0000-0000-000000000000"
xmlns:d1p1="http://guidID" xmlns="http://www.guozhiqi.com">
<DateTime xmlns="http://date">2013-03-21T23:31:13.8584896+08:00</DateTime>
<UserName>郭志奇</UserName><UserPwd>21</UserPwd></guozhiqi>

View Code

注意:xmlSerializer,对字段、属性序列化 遵循.net 序列化规则,字段是public,属性是可读可写,并且我们还也可以指定名称及命名空间

参考:

tks:

http://blog.sina.com.cn/s/blog_6f6769b50100z32v.html

http://www.cnblogs.com/jiagoushi/archive/2013/03/21/2974523.html

http://www.cnblogs.com/danielWise/archive/2010/12/17/1909537.html

.net的XML对象序列化VS WCF中xml序列化问题相关推荐

  1. WCF中因序列化问题引起的异常和错误。

    WCF中因序列化问题引起的异常和错误. 参考文章: (1)WCF中因序列化问题引起的异常和错误. (2)https://www.cnblogs.com/Ruiky/p/3713282.html 备忘一 ...

  2. WCF中的序列化[上篇]

    SOA 和Message Windows Communication Foundation (WCF) 是基于面向服务架构(Service Orientation Architecture--SOA) ...

  3. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  4. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  5. python中常用的序列化模块_Python 中的序列化模块

    封面图片来源:沙沙野 序列化模块前面讲到解码编码的时候提过,网络数据传输只能通过 bytes 类型.而文件写入内容(不是指存储)既可以是 bytes,也可以是 string.这些操作都可以使用 eva ...

  6. xml转java代码_java 中xml转换为Bean实例解析(纯代码)

    最近用到,记录一个自己写的demo在根元素上使用@XmlRootElement注解,name为元素名 子元素属性使用@XmlElement,name为元素名 若有属性,例如,则使用@XmlAttrib ...

  7. 我的WCF之旅(4):WCF中的序列化[下篇]

    ... ...续Part I XMLSerializer 提到XMLSerializer,我想绝大多数人都知道这是asmx采用的Serializer.首先我们还是来看一个例子,通过比较Managed ...

  8. java 序列化 uid,Java中的序列化版本uid

    How is Serialization id stored in the instance of the object ? The Serialization id we declare in Ja ...

  9. WCF 中序列化自定义依赖属性类

    众所周知.NetFramework中存在着两种依赖属性,他们也分别集成着不同但名称相同的依赖对象: System.Windows.DependencyProperty:System.Windows.D ...

  10. 模块(序列化(jsonpickle)+XML+requests)

    一.序列化模块 Python中用于序列化的两个模块: json     跨平台跨语言的数据传输格式,用于[字符串]和 [python基本数据类型] 间进行转换 pickle   python内置的数据 ...

最新文章

  1. 数据中台应该包含什么?
  2. linux shell之数组
  3. react中使用create-react-app创建项目执行函数两次
  4. 前端那些事之原生js实现jquery常用方法
  5. RabbitMQ默认端口记录(亲测)
  6. Ask Me Anything #1 我是新晋CNCF TOC张磊,你有什么想问我的?
  7. 强化学习——Qlearning
  8. 2018 Kaggle 报告:在技术领域,女性从业者持续减少,00后开始展露头脚
  9. C语言用循环结构算平均值,C语言循环结构选择题().doc
  10. 陌陌宣布由总裁兼COO王力担任公司新任CEO
  11. 左边任务栏_Windows10 系统桌面底部的任务栏在侧边了怎么还原
  12. 高达大战分晓!日本机器人先赢后输,遭电锯切割惨惨惨 | 附高清完整视频
  13. 声音文件格式、常见的数字音频格式
  14. 八、JUC强大的辅助类
  15. 苹果Mac OS X 系统下屏幕截图快捷键
  16. MySQL数据表中的数据单表查询
  17. 专题一:Labview表格控件 及 应用(一)
  18. ANPC仿真模型,有源中点钳位三电平逆变器,基于MATLAB Simulink建模仿真
  19. 电梯调度问题模型分析及程序设计(一)
  20. Java修炼之凡界篇 筑基期 第02卷 语法 第04话 类型转换

热门文章

  1. 收集bug开源框架_百度开源又一力作发布!炸了。。。
  2. html自定义表格插件,简单实用的jQuery响应式表格插件
  3. 201621123079《Java程序设计》第1周学习总结
  4. golang学习的点点滴滴:异常处理 defer, panic, recover
  5. String replaceAll()
  6. jquery操作select、radio、checkbox表单元素
  7. 283、移动零(python)
  8. ML_集成学习与Boosting模型
  9. 需要重新启动php,win10电脑遇到问题要重新启动怎么回事
  10. 3. mysql的注解驱动的三种方式_注册 Jdbc 驱动程序的三种方式及Class.forName 的作用...