博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# XML对象序列化、反序列化
阅读量:5036 次
发布时间:2019-06-12

本文共 6407 字,大约阅读时间需要 21 分钟。

  XML 序列化:可以将对象序列化为XML文件,或者将XML文件反序列化为对象还有种方法使用LINQ TO XML或者反序列化的方法从XML中读取数据。

最简单的方法就是 .net framework提供的,只需要定义好xml数据格式,定义好对象即可。
 

1、调用方法:

using RenosData.RDBao.EvidenceUploadModel.Models;using RenosData.RDBao.EvidenceUploadModel.Parsers;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Linq;using System.Xml.Serialization;namespace TestApplication{    class Program    {        static void Main(string[] args)        {             string path = @"C:\Users\PEPE\Desktop\证据接口结构.xml";             FileStream stream = new FileStream(path, FileMode.Open);            EvidenceFilesModel dep = (EvidenceFilesModel)XMLParser.Deserialize(typeof(EvidenceFilesModel), stream);              stream.Close();          }     }}

2、xml解析类

using RenosData.RDBao.EvidenceUploadModel.Models;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Serialization;namespace RenosData.RDBao.EvidenceUploadModel.Parsers{    public class XMLParser    {        public T Deserialize
(T t, string s) { using (StringReader sr = new StringReader(s)) { XmlSerializer xz = new XmlSerializer(t.GetType()); return (T)xz.Deserialize(sr); } } public EvidenceFilesModel Convert(string xml) { //将xml反序列化成对象 EvidenceFilesModel b = new EvidenceFilesModel(); return Deserialize
(b, xml); } #region 反序列化 ///
/// 反序列化 /// ///
类型 ///
XML字符串 ///
public static object Deserialize(Type type, string xml) { try { using (StringReader sr = new StringReader(xml)) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(sr); } } catch (Exception e) { return null; } } ///
/// 反序列化 /// ///
///
///
public static object Deserialize(Type type, Stream stream) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(stream); } #endregion #region 序列化XML文件 ///
/// 序列化XML文件 /// ///
类型 ///
对象 ///
public static string Serializer(Type type, object obj) { MemoryStream Stream = new MemoryStream(); //创建序列化对象 XmlSerializer xml = new XmlSerializer(type); try { //序列化对象 xml.Serialize(Stream, obj); } catch (InvalidOperationException) { throw; } Stream.Position = 0; StreamReader sr = new StreamReader(Stream); string str = sr.ReadToEnd(); return str; } #endregion }}

3、xml对象

根据xml定义的对象如下

eg 根目录类,其他的类就按xml格式一路下去

///     /// 证据接口结构模型    ///     [Serializable]    [XmlRoot("EvidenceFiles")]    public class EvidenceFilesModel    {        ///         /// 证据包信息        ///          public EvidencePackageModel EvidencePackage { get; set; }        ///         /// 证据信息明细        ///            [XmlArrayItem("Evidence")]        public  List
Evidences { get; set; } }

注意特性:[XmlArrayItem("Evidence")] 这个下面是会有多个分支

 

4、XML代码

1.0
TrackNO
Name
Description
ThumbFileName
2
1024
MD5
算法的值
张三
编号
证件号
标识
验证码
版本号
张三
编号
证件号
2014-1-1T15:00:00
地点
成方式-
系统名称
版本号
算法
版本号
.doc
类型
名称
版本
文件名
2014-1-1T15:00:00
账号
签名算法
签名算法密钥
签名的值
张三
编号
用户证件号
2014-1-1T15:00:00
生成的地点
证据的生成方式
证据的加密算法
版本号
.doc
文件类型
解析的应用系统名称
解析的应用系统版本号
1
2014-1-1T15:00:00
2
22
33
4

 

转载于:https://www.cnblogs.com/PEPE/p/3560377.html

你可能感兴趣的文章
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>
C#:System.Array简单使用
查看>>
C#inSSIDer强大的wifi无线热点信号扫描器源码
查看>>
「Foundation」集合
查看>>
算法时间复杂度
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>