XmlHelper

public class XmlHelper

{

private static string CurrentXMLPath = ConfigurationManager.AppSettings["CurrentXMLPath"];

/// <summary>

/// 通过XmlSerializer序列化实体

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="t"></param>

/// <returns></returns>

public static string ToXml<T>(T t) where T : new()

{

XmlSerializer xmlSerializer = new XmlSerializer(t.GetType());

Stream stream = new MemoryStream();

xmlSerializer.Serialize(stream, t);

stream.Position = 0;

StreamReader reader = new StreamReader( stream );

string text = reader.ReadToEnd();

return text;

//string fileName = Path.Combine(CurrentXMLPath, @"Person.xml");//文件名称与路径

//using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))

//{

// XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

// xmlFormat.Serialize(fStream, t);

//}

//string[] lines = File.ReadAllLines(fileName);

//return string.Join("", lines);

}

/// <summary>

/// 字符串序列化成XML

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="content"></param>

/// <returns></returns>

public static T ToObject<T>(string content) where T : new()

{

using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)))

{

XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

return (T)xmlFormat.Deserialize(stream);

}

//string fileName = Path.Combine(CurrentXMLPath, @"Person.xml");

//using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))

//{

// XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

// return (T)xmlFormat.Deserialize(fStream);

//}

}

/// <summary>

/// 文件反序列化成实体

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="fileName"></param>

/// <returns></returns>

public static T FileToObject<T>(string fileName) where T : new()

{

fileName = Path.Combine(CurrentXMLPath, @"Student.xml");

using (Stream fStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))

{

XmlSerializer xmlFormat = new XmlSerializer(typeof(T));

return (T)xmlFormat.Deserialize(fStream);

}

}

/* linq to xml

public static IEnumerable<Hero<T>> GetHeroEntity(string fileName)

{

XDocument xdoc = XDocument.Load(fileName);

XElement root = xdoc.Root;

foreach (XElement element in root.Elements())

{

Hero<T> entity = new Hero<T>();

entity.Name = element.Element("Name").Value;

foreach (XElement item in element.Element("StoryCollection").Elements())

{

var story = ReflectionUtils<T>.ElementToEntity(item);

entity.list.Add(story);

}

yield return entity;

}

}

/// <summary>

/// 将XElement转换为T类型的实体类

/// </summary>

/// <param name="xe">XElement</param>

/// <returns>T类型的实体类</returns>

public static T ElementToEntity<T>(XElement xe)

{

T entity = Activator.CreateInstance<T>(); //T entity = new T();

Type type = typeof(T);

PropertyInfo[] properties = type.GetProperties();

foreach (PropertyInfo p in properties)

{

string propertyName = p.Name;

Type propertyType = p.PropertyType;

object obj = xe.Element(propertyName).Value;

object value = Convert.ChangeType(obj, propertyType);

p.SetValue(entity, value);

}

return entity;

}

*/

}

原文地址:https://www.cnblogs.com/anyihen/p/12773248.html