xml 封装类
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);
}
}
}
}
}
xml 封装类的更多相关文章
- C# Ini、Json、Xml 封装类
1.Ini是什么?(我对它的理解,用于存储用户配置信息的文件,该文件放在用户电脑...) INI文件是一个无固定标准格式的配置文件.它以简单的文字与简单的结构组成,常常使用在Windows操作系统,或 ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- HTTP协议开发应用-HTTP&XML协议栈开发
Netty HTTP+XML协议栈开发 由于HTTP协议的通用性,很多异构系统间的通信交互采用HTTP协议,通过HTTP协议承载业务数据进行消息交互,例如非常流行的HTTP+XML或者RESTful+ ...
- # java对xml文件的基本操作
下面是简单的总结三种常用的java对xml文件的操作 1. dom方式对xml进行操作,这种操作原理是将整个xml文档读入内存总,在内存中进行操作,当xml文档非常庞大的时候就会出现内存溢出的异常,这 ...
- 数据库连接JDBC和数据库连接池C3P0自定义的java封装类
数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...
- https封装类,支持get/post请求
所需jar:commons-logging-1.1.3.jar.httpclient-4.3.1.jar.httpcore-4.3.jar package com.onlyou.microfinanc ...
- Spring中Bean的配置:基于XML文件的方式
Bean的配置一共有两种方式:一种是基于XML文件的方式,另一种是基于注解的方式.本文主要介绍基于XML文件的方式 <bean id="helloWorld" class=& ...
- log4net封装类 zz
封装说明: 1.使用静态方法调用即可写入日志. 2.在日志信息写入之前,定义委托处理日志信息,便于记录日志信息之前,显示给用户. 3.添加代码配置Log4net,避免应用程序总是携带配置文件.如果需要 ...
- Ajax调用返回json,xml数据类型(0517--pm)
一.返回Json型数据: 1.主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
随机推荐
- Spring之i18n配置与使用
Spring的i18n配置: <!-- conf:i18n --> <bean id="messageSource" class="org.spring ...
- 【84.62%】【codeforces 552A】Vanya and Table
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- [TypeScript] Typescript Interfaces vs Aliases Union & Intersection Types
TypeScript has 'interface' and 'type', so when to use which? interface hasName { firstName: string; ...
- iOS项目中所有icon的尺寸以及命名
一般icon以下几个: Icon.png – 57×57 iPhone (ios5/6) Icon@2x.png – 114×114 iPhone Retina (ios5/6) Icon-72.pn ...
- UIApplicationsharedApplication的详解
iPhone应用程序是由主函数main启动,它负责调用UIApplicationMain函数,该函数的形式如下所示: int UIApplicationMain ( int argc, char *a ...
- 短文评估【安徽省选2003】- hash / trie
题目分析 其实是hash/trie裸题,讲一下hash的做法:如果其小写状态是第一次出现则加入集合,同时将小写状态加入小写单词的hash表,最后查时查出出现次数即可. code #include< ...
- shell配置java环境变量和批处理配置环境变量
linux配置java环境只需在/etc/profile中添加以下 前提是把jdk解压到/usr/local路径,当然路径可以随便改 export JAVA_HOME=/usr/local/jdk1. ...
- tensorflow 函数接口的理解
1. tf.nn.softmax tf.nn.softmax(logits, dim=-1, name=None) w*x+b ⇒ logits softmax 函数执行的操作:exp(logits) ...
- 利用jQuery传送json格式的字符串,后端用ashx文件来接收
在Default.aspx里面,我们会透过javascript建立两个物件,分别有Name和Age的属性,再透过Array的方式,将这两个物件塞到Array里面去.使用Ajax内建的$.ajax AP ...
- UML类图几种”关系“的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization)(继承), 实现(Realization)(接口实现),组合(Composition),聚合(Aggregation),关 ...