C# xml与对象相互转换
例如:
1.对象转xml(对象序列化为xml)
string strImage= XmlSerializeHelper.Serialize<List<ImageSingle>>(imageList);
2.xml转对象(反序列化)
Image bojimag= XmlSerializeHelper.DeSerialize<Image>(strimage);
该序列化处理类如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
using System.Text.RegularExpressions; namespace Helper
{
public class XmlSerializeHelper
{ public static string Serialize<T>(T obj)
{
return Serialize<T>(obj, Encoding.UTF8);
} //对象转XML
public static string ObjToXml(object obj)
{
using (MemoryStream Stream = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(obj.GetType());
xml.Serialize(Stream, obj);
Stream.Position = 0;
StreamReader sr = new StreamReader(Stream);
string str = sr.ReadToEnd();
return str;
} } /// <summary>
/// 实体对象序列化成xml字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string Serialize<T>(T obj, Encoding encoding)
{
try
{ if (obj == null)
throw new ArgumentNullException("obj"); var ser = new XmlSerializer(obj.GetType());
using (var ms = new MemoryStream())
{
using (var writer = new XmlTextWriter(ms, encoding))
{
writer.Formatting = Formatting.Indented;
ser.Serialize(writer, obj);
}
var xml = encoding.GetString(ms.ToArray());
xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
xml = xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");
xml=Regex.Replace(xml,@"\s{2}","");
xml = Regex.Replace(xml, @"\s{1}/>", "/>");
return xml;
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 反序列化xml字符为对象,默认为Utf-8编码
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <returns></returns>
public static T DeSerialize<T>(string xml)
where T : new()
{
return DeSerialize<T>(xml, Encoding.UTF8);
} /// <summary>
/// 反序列化xml字符为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static T DeSerialize<T>(string xml, Encoding encoding)
where T : new()
{
try
{
var mySerializer = new XmlSerializer(typeof(T));
using (var ms = new MemoryStream(encoding.GetBytes(xml)))
{
using (var sr = new StreamReader(ms, encoding))
{
return (T)mySerializer.Deserialize(sr);
}
}
}
catch (Exception e)
{
return default(T);
} }
}
} XmlSerializeHelper.cs
C# xml与对象相互转换的更多相关文章
- XML 和 java对象相互转换
XML 和 java对象相互转换 博客分类: XML 和 JSON 下面使用的是JDK自带的类,没有引用任何第三方jar包. Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 ...
- XML与DataSet相互转换,DataSet查询
以FileShare.Read形式读XML文件: string hotspotXmlStr = string.Empty; try { Stream fileStream = new FileStre ...
- Springboot中使用Xstream进行XML与Bean 相互转换
在现今的项目开发中,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用,正常的老式方法是通过获取节点来进行一系列操作,个人感觉太过于复杂.繁琐.推荐一套简单的 ...
- XML转换为对象操作类详解
//XML转换为对象操作类 //一,XML与Object转换类 using System.IO; using System.Runtime.Serialization.Formatters.Binar ...
- C# 使用XML序列化对象(二)
在C# 使用XML序列化对象(一)中描述了使用XML序列化对象的最简单的实现. 现在我们来看看稍微复杂一点的情况: 现有两个类:A和B,B是A的派生类,如下所示: public class A { p ...
- JavaScript DOM对象和JQuery对象相互转换
1.分析源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- c#xml序列化对象,xml标记都缩写了
最近最后一个接口,他们的格式很严格必须是如下格式 <message> <age>20</age> <name>张三</name> </ ...
- XML和对象属性互转的基类
本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...
- jackson xml转对象 对象转xml
public static void main(String[] args) throws Exception { XnServiceGetUserRequest xnServiceGetUserRe ...
- asp.net 对象转XML,XML转对象
//对象转XML public static string ObjToXml(object obj) { using (MemoryStream Stream = new MemoryStream() ...
随机推荐
- github 小技巧
前言 简单记一下github 小技巧,因为经常忘. 正文 就是如何快速搜索到自己想找的项目. 如果自己知道项目名,那么直接输入就可以搜索到. 如果不是,那么一般要通过高级搜索. https://git ...
- three.js实现数字孪生3D仓库一期(开源)
大家好,本文使用three.js实现了3D仓库一期项目,给出了代码,分析了关键点,感谢大家~ 关键词:数字孪生.three.js.Web3D.WebGL.智慧仓库.开源 代码:Github 我正在承接 ...
- Apache ShenYu 网关正式支持 Dubbo3 服务代理
简介: 本文介绍了如何通过 Apache ShenYu 网关访问 Dubbo 服务,主要内容包括从简单示例到核心调用流程分析,并对设计原理进行了总结. 作者:刘良 Apache Dubbo 在去年发布 ...
- 【实践案例】Databricks 数据洞察在美的暖通与楼宇的应用实践
简介: 获取更详细的 Databricks 数据洞察相关信息,可至产品详情页查看:https://www.aliyun.com/product/bigdata/spark 作者 美的暖通与楼宇事业部 ...
- HMS数据库设置和优化
简介:Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据.本文主要分享H ...
- [FAQ] dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
通过 ls -al /usr/local/opt 可以看到 icu4c 链接的不是 libicui18n.64.dylib. 一般是 node 版本问题会出现该提示,通过观察版本大小,决定是升级还是使 ...
- [Go] assignment count mismatch 1 = 2
Golang 中这个错误的的意思是赋值变量的数目不匹配. 举例: result := json.Marshal(List) 由于没有给返回值中的 error 正确赋值,就会报 assignment ...
- dotnet 提升 ToUpper 性能
在应用软件启动过程中,客户端应用软件是对性能敏感的.比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑.一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpp ...
- 2018-8-29-dotnet-core-添加-SublimeText-编译插件
title author date CreateTime categories dotnet core 添加 SublimeText 编译插件 lindexi 2018-08-29 08:53:47 ...
- 一个可一键生成短视频的AI大模型,亲测可用
大家好,我是 Java陈序员. 自从 OpenAI 发布 Sora 文本生成视频模型后,文本生成视频的 AI 技术引起了无数圈内圈外人士的关注和实验. 今天,给大家介绍一个大模型,可一键生成短视频. ...