xml 封装类
2024-08-31 23:23:26
public static class XmlHelper
{
public static T FromXmlFile<T>(this string filePath) where T : new()
{
T result = new T();
if (!File.Exists(filePath))
{
return result;
}
try
{
using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read))
{
fileStream.Position = 0L;
result = (T)new XmlSerializer(typeof(T)).Deserialize(fileStream);
fileStream.Close();
return result;
}
}
catch (Exception ex)
{
throw ex;
}
} public static void ToXmlFile(this object data, string filePath, Encoding encode = null)
{
if (encode == null)
{
encode = Encoding.UTF8;
}
string s = data.ToXmlString(encode);
encode.GetBytes(s).BytesToFile(filePath);
} public static string ToXmlString(this object data)
{
return data.ToXmlString(Encoding.UTF8);
} public static string ToXmlString(this object data, Encoding encode)
{
if (encode == null)
{
return Encoding.Default.GetString(data.ToXmlByte());
}
return encode.GetString(data.ToXmlByte());
} public static byte[] ToXmlByte(this object data)
{
byte[] array = new byte[];
try
{
using (MemoryStream memoryStream = new MemoryStream())
{
new XmlSerializer(data.GetType()).Serialize(memoryStream, data);
array = memoryStream.ToArray();
memoryStream.Flush();
return array;
}
}
catch (Exception ex)
{
throw ex;
}
} public static T FromXmlString<T>(this string XmlString)
{
if (string.IsNullOrEmpty(XmlString))
{
return default(T);
}
return Encoding.UTF8.GetBytes(XmlString).FromXmlByte<T>(Encoding.UTF8);
} public static T FromXmlString<T>(this string XmlString, Encoding encode)
{
if (string.IsNullOrEmpty(XmlString))
{
return default(T);
}
return encode.GetBytes(XmlString).FromXmlByte<T>(encode);
} public static T FromXmlByte<T>(this byte[] buffer, Encoding encode)
{
try
{
using (MemoryStream memoryStream = new MemoryStream(buffer))
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
new XmlTextWriter(memoryStream, encode);
object obj = xmlSerializer.Deserialize(memoryStream);
if (obj == null)
{
return default(T);
}
return (T)obj;
}
}
catch (Exception ex)
{
throw ex;
}
} public static void BytesToFile(this byte[] byts, string filename)
{
if (!string.IsNullOrEmpty(filename))
{
FileInfo fileInfo = new FileInfo(filename);
if (!Directory.Exists(fileInfo.DirectoryName))
{
Directory.CreateDirectory(fileInfo.DirectoryName);
}
using (FileStream output = new FileStream(filename, FileMode.Create))
{
using (BinaryWriter binaryWriter = new BinaryWriter(output))
{
binaryWriter.Write(byts);
}
}
}
}
}
最新文章
- angularjs中 *.min.js.map 404的问题
- 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
- java使用httpcomponents 上传文件
- C语言 百炼成钢14
- linux下查看进程内存使用情况
- android/IOS各平台分享链接/跳转链接配置说明(备用)
- JavaScript--Json对象
- C# 合成图片
- IOS经典的书籍推荐
- MAC下的Intellij IDEA常用快捷键
- Netty实现客户端和服务端通信简单例子
- activiti的springboot模块
- MapReduce ----倒排索引
- 《剑指offer》-孩子们的游戏(圆圈中最后剩下的数)
- 兼容ie10及以上css3加载进度动画
- xcode 不能选择模拟器
- 使用jquery的ajax提交文件上传
- Alice, Bob, Oranges and Apples CodeForces - 586E
- Oracle彻底删除11gR2 GI
- django错误笔记——URL
热门文章
- html5-3 html5标签(热点地图如何实现)(边学边做)
- Momentum(动量/冲量)的理解及应用
- 【codeforces 757C】Felicity is Coming!
- PatentTips - Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
- C++ 与 Java 语言对比
- iOS 一个简单的单例
- 物理引擎UIDynamic
- UITextView的一些事1
- BZOJ 1369 Gem - 树型dp
- TensorFlow 学习(六) —— TensorFlow 与 numpy 的交互