今天要做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] 举报,一经查实,本站将立刻删除。