C# 序列化xml数据到class
来源:互联网 发布:重庆网络运营推广 编辑:程序博客网 时间:2024/05/04 10:00
public static class XmlClassData
{
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为 null 的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this FileInfo fileInfo) where C : class
{
return ReadDataFromXml<C>(fileInfo.FullName);
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// /// <param name="FullPath"> 包含数据的文件路径</param>
/// <returns> Tpye = C , 返回为null的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this string FullPath) where C : class
{
return XmlAction.Read(FullPath, typeof(C)) as C;
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="stream">包含数据的数据流 </param>
/// <returns> Tpye = C , 返回为null的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this Stream stream) where C : class
{
return XmlAction.Read(stream, typeof(C)) as C;
}
/// <summary> 写入数据到 XML </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="obj"> 将要写入的数据</param>
/// <param name="fullpath"> 写 =入的文件路径 </param>
/// <returns> 返回为 null 的时候写入成功 </returns>
public static string WriteDataToXml<C>(this C obj, string fullpath) where C : class
{
try
{
XmlAction.Save(obj, fullpath);
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
public static Stream WriteDataToStream<C>(this C obj) where C : class
{
try
{
return XmlAction.SaveStream(obj);
}
catch
{
}
return null;
}
}
/// <summary> struct 类型进行读取时,不确保一定成功 如果读取不成功会返回 default(S) </summary>
public static class XmlStructData
{
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this FileInfo fileInfo) where S : struct
{
return ReadStructFromXml<S>(fileInfo.FullName);
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this string FullPath) where S : struct
{
var data = XmlAction.Read(FullPath, typeof(S));
return data != null ? (S)data : default(S);
}
/// <summary> 从XML读取数据 ,返回为默认值的时候读取失败 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="FullPath"> 读取的路径 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this Stream stream) where S : struct
{
var data = XmlAction.Read(stream, typeof(S));
return data != null ? (S)data : default(S);
}
/// <summary> 写入数据到XML </summary>
/// <typeparam name="S"> 写入的数据类型 </typeparam>
/// <param name="obj"></param>
/// <param name="fullpath"> 写入的路径 </param>
/// <returns> 返回为 null 的时候写入成功 </returns>
public static string WriteStructToXml<S>(this S obj, string fullpath) where S : struct
{
try
{
XmlAction.Save(obj, fullpath);
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
/// <summary> 封装对与Xml读写操作的类 </summary>
internal static class XmlAction
{
internal static void Save(object obj, string filePath)
{
Save(obj, filePath, obj.GetType());
}
internal static void Save(object obj, string filePath, System.Type type)
{
try
{
using (StreamWriter writer = new StreamWriter(filePath))
{
var xs = new XmlSerializer(type);
xs.Serialize(writer, obj);
writer.Close();
}
}
catch { }
}
internal static Stream SaveStream(object obj)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
var xs = new XmlSerializer(obj.GetType());
xs.Serialize(writer, obj);
writer.Close();
return stream as Stream;
}
internal static object Read(string filePath, System.Type type)
{
if (!System.IO.File.Exists(filePath))
{
return null;
}
try
{
using (StreamReader reader = new StreamReader(filePath))
{
var xs = new XmlSerializer(type);
object obj = xs.Deserialize(reader);
reader.Close();
return obj;
}
}
catch { }
return null;
}
internal static object Read(Stream stream, System.Type type)
{
if (stream == null || stream.Length == 0)
{
return null;
}
try
{
var xs = new XmlSerializer(type);
object obj = xs.Deserialize(stream);
return obj;
}
catch { }
return null;
}
}
{
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为 null 的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this FileInfo fileInfo) where C : class
{
return ReadDataFromXml<C>(fileInfo.FullName);
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// /// <param name="FullPath"> 包含数据的文件路径</param>
/// <returns> Tpye = C , 返回为null的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this string FullPath) where C : class
{
return XmlAction.Read(FullPath, typeof(C)) as C;
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="stream">包含数据的数据流 </param>
/// <returns> Tpye = C , 返回为null的时候读取失败 </returns>
public static C ReadDataFromXml<C>(this Stream stream) where C : class
{
return XmlAction.Read(stream, typeof(C)) as C;
}
/// <summary> 写入数据到 XML </summary>
/// <typeparam name="C"> 读取的数据类型 </typeparam>
/// <param name="obj"> 将要写入的数据</param>
/// <param name="fullpath"> 写 =入的文件路径 </param>
/// <returns> 返回为 null 的时候写入成功 </returns>
public static string WriteDataToXml<C>(this C obj, string fullpath) where C : class
{
try
{
XmlAction.Save(obj, fullpath);
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
public static Stream WriteDataToStream<C>(this C obj) where C : class
{
try
{
return XmlAction.SaveStream(obj);
}
catch
{
}
return null;
}
}
/// <summary> struct 类型进行读取时,不确保一定成功 如果读取不成功会返回 default(S) </summary>
public static class XmlStructData
{
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this FileInfo fileInfo) where S : struct
{
return ReadStructFromXml<S>(fileInfo.FullName);
}
/// <summary> 从XML读取数据 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="fileInfo"> 包含数据的文件 FileInfo 信息 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this string FullPath) where S : struct
{
var data = XmlAction.Read(FullPath, typeof(S));
return data != null ? (S)data : default(S);
}
/// <summary> 从XML读取数据 ,返回为默认值的时候读取失败 </summary>
/// <typeparam name="S"> 读取的数据类型 </typeparam>
/// <param name="FullPath"> 读取的路径 </param>
/// <returns> 返回为默认值的时候读取失败 </returns>
public static S ReadStructFromXml<S>(this Stream stream) where S : struct
{
var data = XmlAction.Read(stream, typeof(S));
return data != null ? (S)data : default(S);
}
/// <summary> 写入数据到XML </summary>
/// <typeparam name="S"> 写入的数据类型 </typeparam>
/// <param name="obj"></param>
/// <param name="fullpath"> 写入的路径 </param>
/// <returns> 返回为 null 的时候写入成功 </returns>
public static string WriteStructToXml<S>(this S obj, string fullpath) where S : struct
{
try
{
XmlAction.Save(obj, fullpath);
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
/// <summary> 封装对与Xml读写操作的类 </summary>
internal static class XmlAction
{
internal static void Save(object obj, string filePath)
{
Save(obj, filePath, obj.GetType());
}
internal static void Save(object obj, string filePath, System.Type type)
{
try
{
using (StreamWriter writer = new StreamWriter(filePath))
{
var xs = new XmlSerializer(type);
xs.Serialize(writer, obj);
writer.Close();
}
}
catch { }
}
internal static Stream SaveStream(object obj)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
var xs = new XmlSerializer(obj.GetType());
xs.Serialize(writer, obj);
writer.Close();
return stream as Stream;
}
internal static object Read(string filePath, System.Type type)
{
if (!System.IO.File.Exists(filePath))
{
return null;
}
try
{
using (StreamReader reader = new StreamReader(filePath))
{
var xs = new XmlSerializer(type);
object obj = xs.Deserialize(reader);
reader.Close();
return obj;
}
}
catch { }
return null;
}
internal static object Read(Stream stream, System.Type type)
{
if (stream == null || stream.Length == 0)
{
return null;
}
try
{
var xs = new XmlSerializer(type);
object obj = xs.Deserialize(stream);
return obj;
}
catch { }
return null;
}
}
阅读全文
0 0
- C# 序列化xml数据到class
- c#序列化XML
- C# 序列化 xml
- XML序列化 C#
- 序列化 XML 数据
- 浅谈C# XML WebServer数据序列化及数据压缩
- 浅谈C# XML WebServer数据序列化及数据压缩
- C#如何把类CLASS实例进行序列化及反序列化为XML文件
- C# List容器(含不同Class但是继承自同一个Class的)的XML序列化
- C# 对象XML序列化
- C# xml序列化类
- c# 序列化 部分 XML
- C# XML序列化小结
- 序列化对象到Xml文件以及反序列话Xml文件到对象(序列化数据到8个Java原型类型)
- C#读取xml文档数据到DataSet
- C#实现序列化对象到XML文档与反序列化
- C# 数据序列化类
- C#之数据序列化
- 编程题Tip
- Appium之设置环境变量.bash_profile
- 如何理解电容、电感产生的相位差
- win10 uwp 毛玻璃
- HAproxy结合Keeplived在centos7上实现高可用
- C# 序列化xml数据到class
- 精通CSS(5.4为链接目标设置样式)&黑客与画家(2)
- Can't create handler inside thread that has not called Looper.prepare() 终极解决方法
- 通过js将div隐藏以后占位与不占位问题。
- 畅言评论的版权及样式如何修改CSS一步简单搞定
- Redis 发布/订阅机制原理分析
- 关于Java面试,你应该准备这些知识点
- Linux cp 命令
- 网易2017实习笔试题-CPU双核调度问题(dp 01背包)