实体类与xml互相转换通用

xiaoxiao2021-03-01  17

// <summary>

/// 实体类序列化成xml /// </summary> /// <param name="enitities">实体.</param> /// <param name="headtag">节点名称</param> /// <returns></returns> public static string ObjListToXml<T>(List<T> enitities, string headtag) { StringBuilder sb = new StringBuilder(); PropertyInfo[] propinfos = null; sb.AppendLine("<?xml version=/"1.0/" encoding=/"utf-8/"?>"); sb.AppendLine("<"+headtag+">"); foreach (T obj in enitities) { //初始化propertyinfo if (propinfos == null) { Type objtype = obj.GetType(); propinfos = objtype.GetProperties(); }

sb.AppendLine("<item>"); foreach (PropertyInfo propinfo in propinfos) { sb.Append("<"); sb.Append(propinfo.Name); sb.Append(">"); sb.Append(propinfo.GetValue(obj, null)); sb.Append("</"); sb.Append(propinfo.Name); sb.AppendLine(">"); } sb.AppendLine("</item>"); } sb.AppendLine("</" + headtag + ">"); return sb.ToString(); }

xml转行为实体类

/// <summary> /// xml文件转化为实体类列表 /// </summary> /// <typeparam name="T">实体名称</typeparam> /// <param name="xml">您的xml文件</param> /// <param name="headtag">xml头文件</param> /// <returns>实体列表</returns> public static List<T> XmlToObjList<T>(string xml, string headtag) where T : new() {

List<T> list = new List<T>(); XmlDocument doc = new XmlDocument(); PropertyInfo[] propinfos = null; doc.LoadXml(xml); //XmlNodeList nodelist = doc.SelectNodes(headtag); XmlNodeList nodelist = doc.GetElementsByTagName(headtag); foreach (XmlNode node in nodelist) { T entity = new T(); //初始化propertyinfo if (propinfos == null) { Type objtype = entity.GetType(); propinfos = objtype.GetProperties(); } //填充entity类的属性 foreach (PropertyInfo propinfo in propinfos) { //实体类字段首字母变成小写的 string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1); XmlNode cnode = node.SelectSingleNode(name); string v = cnode.InnerText; if (v != null) propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null); } list.Add(entity);

} return list;

}

/// 实体类序列化成xml /// </summary> /// <param name="enitities">实体.</param> /// <param name="headtag">节点名称</param> /// <returns></returns> public static string ObjListToXml<T>(List<T> enitities, string headtag) { StringBuilder sb = new StringBuilder(); PropertyInfo[] propinfos = null; sb.AppendLine("<?xml version=/"1.0/" encoding=/"utf-8/"?>"); sb.AppendLine("<"+headtag+">"); foreach (T obj in enitities) { //初始化propertyinfo if (propinfos == null) { Type objtype = obj.GetType(); propinfos = objtype.GetProperties(); }

sb.AppendLine("<item>"); foreach (PropertyInfo propinfo in propinfos) { sb.Append("<"); sb.Append(propinfo.Name); sb.Append(">"); sb.Append(propinfo.GetValue(obj, null)); sb.Append("</"); sb.Append(propinfo.Name); sb.AppendLine(">"); } sb.AppendLine("</item>"); } sb.AppendLine("</" + headtag + ">"); return sb.ToString(); }

xml转行为实体类

/// <summary> /// xml文件转化为实体类列表 /// </summary> /// <typeparam name="T">实体名称</typeparam> /// <param name="xml">您的xml文件</param> /// <param name="headtag">xml头文件</param> /// <returns>实体列表</returns> public static List<T> XmlToObjList<T>(string xml, string headtag) where T : new() {

List<T> list = new List<T>(); XmlDocument doc = new XmlDocument(); PropertyInfo[] propinfos = null; doc.LoadXml(xml); //XmlNodeList nodelist = doc.SelectNodes(headtag); XmlNodeList nodelist = doc.GetElementsByTagName(headtag); foreach (XmlNode node in nodelist) { T entity = new T(); //初始化propertyinfo if (propinfos == null) { Type objtype = entity.GetType(); propinfos = objtype.GetProperties(); } //填充entity类的属性 foreach (PropertyInfo propinfo in propinfos) { //实体类字段首字母变成小写的 string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1); XmlNode cnode = node.SelectSingleNode(name); string v = cnode.InnerText; if (v != null) propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null); } list.Add(entity);

} return list;

}

相关资源:XML文件与实体类的互相转换
转载请注明原文地址: https://www.6miu.com/read-4050356.html

最新回复(0)