1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > c#教程 >
        • C#教程之

        • 2019-04-13 21:06 來源:未知

        在網上找了很多關于對象轉XML的,大多不支持匿名類轉換,今天在stackoverflow找了一篇文章  但是有些許BUG  已經修復

        復制代碼
         1 public static class ObjectToXML
         2     {
         3         private static readonly Type[] WriteTypes = new[] {
         4         typeof(string), typeof(DateTime),typeof(decimal), typeof(Guid),
         5         };
         6         public static bool IsSimpleType(this Type type)
         7         {
         8             return type.IsPrimitive || WriteTypes.Contains(type) || type.IsEnum;
         9         }
        10         public static XElement ToXml(this object input)
        11         {
        12             return input.ToXml(null);
        13         }
        14 
        15         private static string GetXMLElementAttributeName(PropertyInfo info)
        16         {
        17             string attributeName = "";
        18 
        19             var attr = info.GetCustomAttributes(true);
        20             if (attr != null && attr.Length > 0)
        21             {
        22                 
        23                 foreach (var item in attr)
        24                 {
        25                     if (item is XmlElementAttribute)
        26                     {
        27                         var temp = item as XmlElementAttribute;
        28                         attributeName = temp.ElementName;
        29 
        30                         
        31                     }
        32                     else if(item is XmlRootAttribute)
        33                     {
        34                         var temp = item as XmlRootAttribute;
        35                         attributeName = temp.ElementName;
        36                     }
        37                 }
        38             }
        39             return attributeName;
        40         }
        41 
        42         private static object GetPropertyValue(object input, PropertyInfo info)
        43         {
        44             if (info.PropertyType.IsEnum)
        45             {
        46                 return (int)info.GetValue(input);
        47             }
        48             return info.GetValue(input);
        49         }
        50 
        51         public static XElement ToXml(this object input, string element)
        52         {
        53             if (input == null)
        54                 return null;
        55 
        56             if (string.IsNullOrEmpty(element))
        57                 element = "object";
        58 
        59             element = XmlConvert.EncodeName(element);
        60             var ret = new XElement(element);
        61 
        62             if (input != null)
        63             {
        64                 var type = input.GetType();
        65                 var props = type.GetProperties();
        66                 var elements = from prop in props
        67                                let name = XmlConvert.EncodeName(GetXMLElementAttributeName(prop) == "" ? prop.Name : GetXMLElementAttributeName(prop))
        68                                let val = GetPropertyValue(input,prop)
        69                                let value = prop.PropertyType.IsSimpleType()
        70                                     ? new XElement(name, val)
        71                                     : val.ToXml(name)
        72                                where value != null
        73                                select value;
        74 
        75                 ret.Add(elements);
        76             }
        77 
        78             return ret;
        79         }
        80     }
        復制代碼

        調用:

        var model = new {
           Name = "張三",
           Age = 18 
        };
        
        model.ToXml("RequestParameter").ToString();

        記得引入命名空間

        相關教程
        免费看成年人视频大全_免费看成年人视频在线观看