一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】
2016-12-15 10:45
537 查看
原文:http://blog.csdn.net/otong/article/details/7894059
序列化或反序列化成一个字符串:
方法一:
序列化:
[csharp] view plain copy
public static string XMLSerialize<T>(T entity)
{
StringBuilder buffer = new StringBuilder();
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter writer = new StringWriter(buffer))
{
serializer.Serialize(writer, entity);
}
return buffer.ToString();
}
反序列化:
[csharp] view plain copy
public static T DeXMLSerialize<T>(string xmlString)
{
T cloneObject = default(T);
StringBuilder buffer = new StringBuilder();
buffer.Append(xmlString);
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(buffer.ToString()))
{
Object obj = serializer.Deserialize(reader);
cloneObject = (T)obj;
}
return cloneObject;
}
方法二:
[csharp] view plain copy
/// <summary>
/// 对象序列化成 XML String
/// </summary>
public static string XmlSerialize<T>(T obj)
{
string xmlString = string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
xmlSerializer.Serialize(ms, obj);
xmlString = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlString;
}
/// <summary>
/// XML String 反序列化成对象
/// </summary>
public static T XmlDeserialize<T>(string xmlString)
{
T t = default(T);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
{
using (XmlReader xmlReader = XmlReader.Create(xmlStream))
{
Object obj = xmlSerializer.Deserialize(xmlReader);
t = (T)obj;
}
}
return t;
}
如果要序列化到一个文件,则使用FileStream就可以了
如:
string strFile = @"c:/book.xml";
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter.Serialize(fs, entity);
}
附:其实还可以直接用SringWriter
StringBuilder sb = new StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sb);
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter .Serialize(writer,entity );
序列化或反序列化成一个字符串:
方法一:
序列化:
[csharp] view plain copy
public static string XMLSerialize<T>(T entity)
{
StringBuilder buffer = new StringBuilder();
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter writer = new StringWriter(buffer))
{
serializer.Serialize(writer, entity);
}
return buffer.ToString();
}
反序列化:
[csharp] view plain copy
public static T DeXMLSerialize<T>(string xmlString)
{
T cloneObject = default(T);
StringBuilder buffer = new StringBuilder();
buffer.Append(xmlString);
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(buffer.ToString()))
{
Object obj = serializer.Deserialize(reader);
cloneObject = (T)obj;
}
return cloneObject;
}
方法二:
[csharp] view plain copy
/// <summary>
/// 对象序列化成 XML String
/// </summary>
public static string XmlSerialize<T>(T obj)
{
string xmlString = string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
xmlSerializer.Serialize(ms, obj);
xmlString = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlString;
}
/// <summary>
/// XML String 反序列化成对象
/// </summary>
public static T XmlDeserialize<T>(string xmlString)
{
T t = default(T);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
{
using (XmlReader xmlReader = XmlReader.Create(xmlStream))
{
Object obj = xmlSerializer.Deserialize(xmlReader);
t = (T)obj;
}
}
return t;
}
如果要序列化到一个文件,则使用FileStream就可以了
如:
string strFile = @"c:/book.xml";
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter.Serialize(fs, entity);
}
附:其实还可以直接用SringWriter
StringBuilder sb = new StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sb);
XmlSerializer formatter = new XmlSerializer(typeof(T));
formatter .Serialize(writer,entity );
相关文章推荐
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串(转)
- 如何将多个对象序列化到同一个文件和反序列化
- Java序列化 如何把多个对象存储在一个文件中
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- Java序列化 如何把多个对象存储在一个文件中
- java如何将一个序列化对象添加到压缩文件中
- java如何在文件中读取一个字符串并创建以这个字符为名字的类的对象
- C#实现对象的Xml格式序列化及反序列化
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- C#如何生成一个XML文件,并保存在硬盘的指定目录下
- 在C#如何遍历一个对象的所有属性
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- 转载:读取一个文本文件并把文件中的文本保存在一个CString对象中,如何能做到
- C#实现对象的Xml格式序列化及反序列化
- C#.NET向现有文件添加文本+创建一个新文本文件并写入一个字符串
- C#实现对象的Xml格式序列化及反序列化
- .net C# 如何判断一个对象是否具有某个方法
- C#实现对象的Xml格式序列化及反序列化
- C#2005如何读取XML文件中的数据库连接字符串??? (好像和2003不一样啊) 急,跪求!