加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

应用于webservice的List转xml方法

发布时间:2020-12-17 01:11:15 所属栏目:安全 来源:网络整理
导读:??? 今天要做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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读