• 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;

    }

    */

    }

  • 相关阅读:
    delphi 对TThread扩充TSimpleThread
    delphi 关于命名
    Delphi 实现Ini文件参数与TEdit和TCheckBox绑定(TSimpleParam)
    delphi 操作 TWebBrowser 实现自动填表(JQuery脚本与 OleVariant 方法)
    delphi idhttp 实战用法(TIdhttpEx)
    每周总结(10)
    每周总结(9)(补)
    每周总结(8)
    《大话设计模式》读书笔记(四)
    《大话设计模式》读书笔记(三)
  • 原文地址:https://www.cnblogs.com/anyihen/p/12773248.html
Copyright © 2020-2023  润新知