六、用DataContractSerialize类序列化XML
一、层次结构
基类:XmlObjectSerializer
派生类:
- DataContractSerializer
- NetDataContractSerializer
- DataContractJsonSerializer
需要引入的程序集:
- System.Runtime.Serialization.dll
- System.Runtime.Serialization.Primitives.dll
二、实体类
[DataContract(Name = "order", Namespace = "http://a/order")] //[KnownType(typeof(order))] public class Order { public Order(Guid id, Product product) { this.OrderID = id; this.Product = product; } [DataMember(Name = )] public Guid OrderID { set; get; } [DataMember] public Product Product { set; get; } } [DataContract(Name = "product", Namespace = "http://a/product")] //IsRequired=false,EmitDefaultValue=false public class Product { public Product(Guid id, string productArea) { this.ProductID = id; this.productArea = productArea; } [DataMember(Name = )] public Guid ProductID { set; get; } [DataMember] private string productArea { set; get; } //私有属性也可以序列化。 }
二、序列化与反序列化
Product product = new Product(Guid.NewGuid(), "XiaMen"); Order order = new Order(Guid.NewGuid(), product); string filename = @"C:\s.xml"; using (FileStream fs = new FileStream(filename, FileMode.Create)) { DataContractSerializer serializer = new DataContractSerializer(typeof(Order)); using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs)) { serializer.WriteObject(writer, order); } } Process.Start(filename); using (FileStream fs = new FileStream(filename, FileMode.Open)) { DataContractSerializer serializer = new DataContractSerializer(typeof(Order)); using (XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas())) { order = serializer.ReadObject(reader) as Order; } }
三、得到的XML内容
<?xml version="1.0" encoding="utf-8"?> <order xmlns="http://a/order" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Product xmlns:a="http://a/product"> <a:productArea>XiaMen</a:productArea> <a:id>d3b4c977-d052-4fd4-8f59-272e56d875a8</a:id> </Product> <id>96d0bb44-cee4-41b6-ae20-5d801c1b3dc9</id> </order>
六、用DataContractSerialize类序列化XML的更多相关文章
- 利用JAXB实现java实体类和xml互相转换
1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...
- 类的XML序列化(XML Serialization)
最近做的一个ASP.NET项目中,需要在一个页面中维护一个类的数组,在每次页面刷新的使其前一次的状态保持不变.开始错误的使用了static,导致了致命的共享错误.后来突然想起C#类能够使用XML序列化 ...
- Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable
酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...
- 使用C#实现实体类和XML相互转换
一.实体类转换成XML 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化 public static string XmlSerialize<T& ...
- 简单Java类与XML之间的转换
需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar) 1.工具类XstreamUtil package com.learn.util; import com.tho ...
- JAXB2序列化XML
Jaxb2 实现JavaBean与xml互转 http://zhuchengzzcc.iteye.com/blog/1838702 JAXBContext类,是应用的入口,用于管理XML/Java绑定 ...
- WCF中序列化(XML\JSON\Dt)
序列化 是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象. 序列化描述了持久化 ...
- VC解析XML--使用CMarkup类解析XML
经过今天尝试MFC解析XML串,也算有了不少收获,总结一下. 我是使用的CMarkup类对XML进行操作. CMarkup好象都是先从一个xml文件里 ...
- C# 实体类序列化与反序列化一 (XmlSerializer)
/// <summary> /// 实体类序列化的反序列化的类 /// </summary> /// <typeparam name="T">& ...
随机推荐
- java中selenium判断某个元素是否存在
selenium工具 直接通过findElement方法获取某个元素,如果该元素不存在肯定会报错,selenium又没有可以判断该元素是否存在的方法 于是我们可以手写一个工具类,来判断这个元素是否存在 ...
- Word 固定行间距公式图片显示不全、Word Eculid 字体导致行间距过大、Word 行间距过大
1. 前言 1.有些文章行间距要求是固定值,比如,固定值15磅,但是这样会导致有些公式.图片显示不全.例如下图: 2.Euclid这个字体很容易导致行间距超大. 2. 解决方案 1.把固定值15磅改为 ...
- C之typedef
1.1 typedef 解析: 1.typedef是一个关键字: 2.typedef它的对象必须是一个类型: 3.作用:给类型取一个别名 1.2 typedef 格式 : typedef 类型 ...
- stm32片上ADC转换实验
原理图所示: BAT_DET 接到PB0 引脚,VSYS 是直流3.7V的电压.再来看下103的adc转换和引脚GPIO的关系 我们直接选用ADC1 根据上表格只能使用通道8 下面给我常用的ADC1寄 ...
- VUE框架概括+模块语法使用(上)
vue是什么 官网(https://cn.vuejs.org/) Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计: Vue 的核心库只关注视图 ...
- Kubernetes 学习笔记(一):基础概念
个人笔记,仅本人查阅使用,不保证正确. 零.微服务 微服务架构专注于应用解耦合,通过将应用彻底地组件化和服务化,每个微服务只包含一个非常小的功能,比如权限管理.日志收集等等.由这一组微服务组合起来,提 ...
- SVN_06导入项目文档
把这个项目的文档迁入到SVN Server上的库中 [1]首先右键点击projectAdmin目录,这时候的右键菜单例如以下图看到的:选择copy URL toCLipboard,就是复制统一资源定位 ...
- VBA循环(十一)
当需要多次执行一段代码时,就可以使用循环语句. 一般来说,语句是按顺序执行的:函数中的第一个语句首先执行,然后是第二个,依此类推. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许多次 ...
- 解决github提示安全漏洞的问题
今天在提交代码的时候发现github提示了这样的错误: We found potential security vulnerabilities in your dependencies. Only t ...
- UI5-技术篇-SEGW DEEP ENTITY测试
参考:http://blog.sina.com.cn/s/blog_a7d67d810102xgms.html 一般调用后端的OData服务需要同时传输多个记录表对业务逻辑进行处理(例如BAPI),今 ...