微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应用于webservice的List转xml方法

    今天要做webservice的接口,List泛型变成xml时需要转换,而且实体的属性名称也要转换成调用方明白的属性中文),所有仿照网上的代码做了一个转换的例子。

//===================================转换方法==========================================

 /// <summary>
        /// 对象实例转成XML
        /// </summary>
        /// <param name="item">对象实例</param>

       ///<param name="dict">属性映射集合</param>
        /// <returns></returns>
        public static string EntityToXml(T item,Dictionary<string,string> dict)
        {
            IList<T> items = new List<T>();
            items.Add(item);
            return EntityToXml(items,dict);

        }
        /// <summary>
        /// 对象实例转成xml
        /// </summary>
        /// <param name="items">对象实例集</param>
        /// <returns></returns>
        public static string EntityToXml(IList<T> items,string>  dict)
        {
           
            //创建XMLDoucument文档
            XmlDocument doc = new XmlDocument();
            XmlElement root = doc.CreateElement(dict[typeof(T).Name+"s"]);
            //设置元素的属性
             root.SetAttribute("count",items.Count.ToString());
                   
            //添加根元素的子元素集
            foreach(T item in items)
            {
                EntityToXml(doc,root,item,dict);

            }
            //向XmlDocument文档添加根元素
            doc.AppendChild(root);
            return doc.InnerXml;
        }

        private static void EntityToXml(XmlDocument doc,XmlElement root,T item,string> dict)
        {
            //创建元素
            XmlElement xmlItem = doc.CreateElement(dict[typeof(T).Name]);
            XmlElement pinfoItem = null;
            root.AppendChild(xmlItem);

            //对象的属性
            System.Reflection.PropertyInfo[] propertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
            foreach (System.Reflection.PropertyInfo pinfo in propertyInfo)
            {
                if (pinfo != null)
                {
                   
                    //对象属性名称
                    pinfoItem = doc.CreateElement(dict[pinfo.Name]);
                    //对象属性
                    string value = String.Empty;

                    if (pinfo.GetValue(item,null) != null)
                    {
                        value = pinfo.GetValue(item,null).ToString();//获取对象属性

                        //设置元素的属性
                    }

                    pinfoItem.InnerText = value;
                }

                //想根添加子元素

                xmlItem.AppendChild(pinfoItem);


            }
        }

//===========================================webservice  方法=====================================

 /// <summary>
        /// 以组织机构代码、发证单位和时间段查询企业获取的资质
        /// </summary>
        /// <param name="ZZJGDM">组织机构代码</param>
        /// <param name="startTime">开始时间(针对发证日期)</param>
        /// <param name="overTime">结束时间</param>
        ///  <param name="depart">发证单位</param>
        /// <returns></returns>
        /// <returns></returns>
        [WebMethod(Description = "获取企业资质信息")]
        public string GetCertifications( string 开始时间,string 结束时间)
        {
            //属性名和字段中文映射
            Dictionary<string,string> dict = new Dictionary<string,string>();

            dict.Add("T_Certifications","item");
            dict.Add("T_Certificationss","资质信息");
            dict.Add("startTime","有效时间");
            dict.Add("endTime","失效时间");
            dict.Add("states","发布状态"); 
  
            List<T_Certifications> item = logic.GetCertifications(开始时间,结束时间);
            return InterfaceData.Utility.ConvertDataToXML<T_Certifications>.EntityToXml(item,dict);

         

        }

 

//================================T_Certifications 实体==============================

[Serializable]
 public class T_Certifications
 {
  public T_Certifications()
  { }
  #region Model
  public string startTime

 public string endTime;

  public string states;
 

 }
}

 

//================================调用接口返回结果=================================

<string xmlns="http://tempuri.org/">   <资质信息>     <item>       <有效时间>2011年1月1日</有效时间>       <失效时间>2011年2月1日</失效时间>       <发布状态> </发布状态>     </item>   </资质信息> </string>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐