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);
}
}
}
}
}

最新文章

  1. angularjs中 *.min.js.map 404的问题
  2. 关于Unity动态物体无法向使用使用custom shader和lightmap的物体投射阴影
  3. java使用httpcomponents 上传文件
  4. C语言 百炼成钢14
  5. linux下查看进程内存使用情况
  6. android/IOS各平台分享链接/跳转链接配置说明(备用)
  7. JavaScript--Json对象
  8. C# 合成图片
  9. IOS经典的书籍推荐
  10. MAC下的Intellij IDEA常用快捷键
  11. Netty实现客户端和服务端通信简单例子
  12. activiti的springboot模块
  13. MapReduce ----倒排索引
  14. 《剑指offer》-孩子们的游戏(圆圈中最后剩下的数)
  15. 兼容ie10及以上css3加载进度动画
  16. xcode 不能选择模拟器
  17. 使用jquery的ajax提交文件上传
  18. Alice, Bob, Oranges and Apples CodeForces - 586E
  19. Oracle彻底删除11gR2 GI
  20. django错误笔记——URL

热门文章

  1. html5-3 html5标签(热点地图如何实现)(边学边做)
  2. Momentum(动量/冲量)的理解及应用
  3. 【codeforces 757C】Felicity is Coming!
  4. PatentTips - Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
  5. C++ 与 Java 语言对比
  6. iOS 一个简单的单例
  7. 物理引擎UIDynamic
  8. UITextView的一些事1
  9. BZOJ 1369 Gem - 树型dp
  10. TensorFlow 学习(六) —— TensorFlow 与 numpy 的交互