应用于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, Dictionary<string, 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, Dictionary<string, 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>

阅读更多
个人分类: asp.net
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭