C#xml泛型序列化
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
using System.Xml;
using System.Xml.Serialization; namespace Com.AppCode.Helper
{
/// <summary>
/// 泛型序列化
/// </summary>
public class XmlHelper
{
/// <summary>
/// 对象序列化成 XML String
/// </summary>
public static string Serialize<T>(T obj)
{
string xmlString = string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
xmlSerializer.Serialize(ms, obj);
xmlString = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlString;
} /// <summary>
/// XML String 反序列化成对象
/// </summary>
public static T Deserialize<T>(string xmlString)
{
T t = default(T);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
{
using (XmlReader xmlReader = XmlReader.Create(xmlStream))
{
Object obj = xmlSerializer.Deserialize(xmlReader);
t = (T)obj;
}
}
return t;
} /// <summary>
/// XML String 反序列化成对象
/// </summary>
public static List<T> DeserializeToList<T>(string xml)
{
return new List<T>();
} /* Test
var xml =
@"<classes>
<class>
<classname>高三一班</classname>
<id>1</id>
<remark>学霸</remark>
<students>
<student>
<name>爱因斯坦</name>
<sex>男</sex>
<age>18</age>
</student>
<student>
<name>牛顿</name>
<sex>男</sex>
<age>18</age>
</student>
</students>
</class>
<class>
<classname>高三Ⅹ班</classname>
<id>1</id>
<remark>渣渣</remark>
<students>
<student>
<name>特朗普</name>
<sex>男</sex>
<age>18</age>
</student>
<student>
<name>本</name>
<sex>男</sex>
<age>18</age>
</student>
</students>
</class>
</classes>";
List<ClassSet> list = XmlHelper.XmlToList<ClassSet>(xml, "classes"); [Serializable, XmlType("class")]
public class ClassSet
{
[XmlElement("classname")]
public string Name { get; set; } [XmlElement("id")]
public int Id { get; set; } [XmlElement("remark")]
public string Remark { get; set; } [XmlArray("students")]
public List<Student> Students { get; set; } [Serializable, XmlType("student")]
public class Student
{
[XmlElement("name")]
public string Name { get; set; } [XmlElement("sex")]
public string Sex { get; set; } [XmlElement("age")]
public int Age { get; set; } }
}
*/ public static List<T> XmlToList<T>(string xml, string rootName) where T : class
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName));
using (StringReader sr = new StringReader(xml))
{
List<T> list = serializer.Deserialize(sr) as List<T>;
return list;
}
} }
/// <summary>
/// <remarks>Xml序列化与反序列化</remarks>
/// <creator>zhangdapeng</creator>
/// </summary>
public class XmlSerializeUtil
{
#region 反序列化
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type">类型</param>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static object Deserialize(Type type, string xml)
{
using (StringReader sr = new StringReader(xml))
{
XmlSerializer xmldes = new XmlSerializer(type);
return xmldes.Deserialize(sr);
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="xml"></param>
/// <returns></returns>
public static object Deserialize(Type type, Stream stream)
{
XmlSerializer xmldes = new XmlSerializer(type);
return xmldes.Deserialize(stream);
}
#endregion #region 序列化
/// <summary>
/// 序列化
/// </summary>
/// <param name="type">类型</param>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string Serializer(Type type, object obj)
{
MemoryStream Stream = new MemoryStream();
XmlSerializer xml = new XmlSerializer(type);
//序列化对象
xml.Serialize(Stream, obj);
Stream.Position = ;
StreamReader sr = new StreamReader(Stream);
string str = sr.ReadToEnd(); sr.Dispose();
Stream.Dispose(); return str;
} #endregion
}
}
C#xml泛型序列化的更多相关文章
- windows phone8.1:Xml,Json序列化和反序列化
原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...
- (转)C# Xml进行序列化与反序列化
---------------------------------------------------------------文章1---------------------------------- ...
- 生成xml文件的步骤 -- XML的序列化器
1. 初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2. 设置序列化器的参数 serializer.setOutput(o ...
- xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................
- C#泛型序列化困境
[C#泛型序列化困境] 问题的起因是这样,有一个需求,将JsonArray转化为List,JsonArray中的元素均是string,此string可被转化为int.float.或维持string.我 ...
- .Net C# 泛型序列化和反序列化JavaScriptSerializer
项目添加引用System.Web.Extensions /// <summary> /// 泛型序列化 /// </summary> public class JsonHelp ...
- Java ——泛型 序列化
本节重点思维导图 泛型 序列化 泛型 import java.util.ArrayList; import java.util.Date; import java.util.Iterator; i ...
- 复杂 XML 的 序列化 反序列化
已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象. <?xml version="1.0" encoding="utf-8" ...
- 通过XmlSerializer 实现XML的序列化与反序列化
通过XmlSerializer 我们可以十分简单的将Model与XML进行转换 官文在点这里 帮助类 using System; using System.Text; using System.Xml ...
随机推荐
- Oralce JDBC jar包下载
下载地址:https://pan.baidu.com/s/1sU7gu4biigEAw-3Bu7yIOA 下载包中包括以下文件: ojdbc5.jarojdbc5dms.jarojdbc5dms_g. ...
- cin中的注意事项
猎豹网校C++ Primer学习笔记 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/11396323.html 在VS中使用cin& ...
- ISO/IEC 9899:2011 条款6.4.9——注释
6.4.9 注释 1.除了在一个字符常量.一个字符串字面量.或一个注释内,字符 /* 引入一个注释.这么一个注释的内容被检查仅用于标识多字节字符,并且要找到 */ 来终结.[注:从而,/* ... * ...
- Foxmail找回密码 及 Wireshark 使用【我】
Foxmail中设置了密码,但是时间长忘了,现在要用,需要弄出来 首先,安装 Wireshark 抓包工具 一路下一步即可, 安装完确保这个图标表示的组件已经安装: 如果没有安装,在Wireshark ...
- 不同三维引擎渲染IFC数据效果对比
- osg 场景漫游
#ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osg/Group> #include <os ...
- Javescript——API连接 && json数据处理(待续)
原文链接1:How to Connect to an API with JavaScript 原文链接2:How to Use the JavaScript Fetch API to Get JSON ...
- django模板--条件控制标签
条件控制标签 在django模板中可以通过条件控制标签进行逻辑控制,条件控制标签的语法如下: {% if condition1 %} ... {% elif condition2 %} ... {% ...
- Python3之使用枚举类
当我们需要定义常量时,一个方法是用大写变量通过整数来定义,例如月份 JAN = 1 FEB = 2 MAR = 3 APR=4 May=5 Jun=6 Jul=7 Aug=8 Sep=9 Oct=10 ...
- MariaDB集群配置(主从和多主)
1.mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从 ...