zoukankan      html  css  js  c++  java
  • 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;

    }

    */

    }

  • 相关阅读:
    java.util.Date和java.sql.Date的区别及应用
    powderdesinger显示中英文表名
    Axure实现提示文本单击显示后自动消失的效果
    如何把Java的double类型变量保留两位小数
    MyBatis查询,返回值Map或List<Map>
    Spring Security整合JWT,实现单点登录,So Easy~!
    win10+mysql8.0安装
    Intellij IDEA导入JAVA项目并启动(哈哈哈,天天都有人问)
    色彩设计基础知识整理
    前端开发者必备的Nginx知识
  • 原文地址:https://www.cnblogs.com/anyihen/p/12773248.html
Copyright © 2011-2022 走看看