zoukankan      html  css  js  c++  java
  • C#中实体集合和实体转换成相应的string、XDocument、XElement

    C#中实体集合和实体转换成相应的string、XDocument、XElement

    public class SimpleXmlConverter
        {
            public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new()
            {
                if (entities == null || entities.Count == 0)
                {
                    return string.Empty;
                }
        
                StringBuilder builder = new StringBuilder();
                builder.AppendLine(XmlResource.XmlHeader);
        
                XElement element = ToXElement<T>(entities, rootName);
                builder.Append(element.ToString());
        
                return builder.ToString();
            }
        
            public static XmlDocument ToXmlDocument<T>(IList<T> entities, string rootName = "") where T : new()
            {
                if (entities == null || entities.Count == 0)
                {
                    return null;
                }
        
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.LoadXml(ToXml<T>(entities, rootName));
        
                return xmlDocument;
            }
        
            public static XDocument ToXDocument<T>(IList<T> entities, string rootName = "") where T : new()
            {
                if (entities == null || entities.Count == 0)
                {
                    return null;
                }
                  
                return  XDocument.Parse(ToXml<T>(entities, rootName));
            }
        
            public static XElement ToXElement<T>(IList<T> entities, string rootName = "") where T : new()
            {
                if (entities == null || entities.Count == 0)
                {
                    return null;
                }
                     
                if (string.IsNullOrWhiteSpace(rootName))
                {
                    rootName = typeof(T).Name + XmlResource.XmlRootNameSuffix;
                }
        
                XElement element = new XElement(rootName);
        
                foreach (T entity in entities)
                {
                    element.Add(ToXElement<T>(entity));
                }
        
                return element;
            }
        
            public static string ToXml<T>(T entity) where T : new()
            {
                if (entity == null)
                {
                    return string.Empty;
                }
        
                XElement element = ToXElement<T>(entity);
        
                return element.ToString();
            }
        
            public static XElement ToXElement<T>(T entity) where T : new()
            {
                if (entity == null)
                {
                    return null;
                }
        
                XElement element = new XElement(typeof(T).Name);
                PropertyInfo[] properties = typeof(T).GetProperties();
                XElement innerElement = null;
                object propertyValue = null;
        
                foreach (PropertyInfo property in properties)
                {
                    propertyValue = property.GetValue(entity, null);
                    innerElement = new XElement(property.Name, propertyValue);
                    element.Add(innerElement);
                }
        
                return element;
            }
        
            public static XElement ToXElement(Type type) 
            {
                if (type == null)
                {
                    return null;
                }
        
                XElement element = new XElement(type.Name);
                PropertyInfo[] properties = type.GetProperties();
                XElement innerElement = null;
        
                foreach (PropertyInfo property in properties)
                {
                    innerElement = new XElement(property.Name, null);
                    element.Add(innerElement);
                }
        
                return element;
            }
        }
    View Code
  • 相关阅读:
    法瑞意游记+攻略 一(巴黎 凡尔赛、荣军院,十二月二十六)
    [转]Exchange Server 2013部署系列之一:部署环境介绍
    [转]在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
    DinnerNow案例分析
    [转]DPM2012系列之六:在Win7上安装DPM远程管理控制台
    Windows Phone Dev Center Develop
    [转]DPM2012系列之十:备份exchange2010数据库
    [转]DPM2012系列之五:开启最终用户恢复功能
    Windows Phone Dev Center How do I join?
    [转]DPM2012系列之三:浅谈硬件需求
  • 原文地址:https://www.cnblogs.com/love201314/p/5590709.html
Copyright © 2011-2022 走看看