public class XmlHelper
{
/// <summary>
/// 实体类序列化成xml
/// </summary>
/// <param name="enitities">The enitities.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static string ToXml<T>(List<T> enitities, string root = "Score")
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propinfos = null;
foreach (T obj in enitities)
{
//初始化propertyinfo
if (propinfos == null)
{
Type bjtype = obj.GetType();
propinfos = bjtype.GetProperties();
}
sb.AppendLine("<" + root + ">");
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("</" + root + ">");
}
return sb.ToString();
}
/// <summary>
/// 使用XML初始化实体类容器
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="typename">The typename.</param>
/// <param name="xml">The XML.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static List<T> XmlToObjList<T>(string xml, string root = "Score")
where T : new()
{
List<T> list = new List<T>();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
XmlNodeList nodelist = doc.SelectNodes(root);
foreach (XmlNode node in nodelist)
{
T entity = new T();
//初始化propertyinfo
if (propinfos == null)
{
Type bjtype = entity.GetType();
propinfos = bjtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in propinfos)
{
XmlNode cnode = node.SelectSingleNode(propinfo.Name);
if (cnode == null) continue;
string v = cnode.InnerText;
if (v != null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
/// <summary>
/// 使用XML初始化实体类容器
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="typename">The typename.</param>
/// <param name="xml">The XML.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static List<T> XmlToObj<T>(string xml, string root = "Item")
where T : new()
{
List<T> list = new List<T>();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
XmlNodeList nodelist = doc.GetElementsByTagName(root);
foreach (XmlNode node in nodelist)
{
T entity = new T();
//初始化propertyinfo
if (propinfos == null)
{
Type bjtype = entity.GetType();
propinfos = bjtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in propinfos)
{
foreach (XmlNode sNode in node.ChildNodes)
{
if (sNode == null) continue;
if (sNode.Name == propinfo.Name)
{
string v = sNode.InnerText;
if (v != null)
{
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
break;
}
}
}
//XmlNode cnode = node.(propinfo.Name);
//if (cnode == null) continue;
//string v = cnode.InnerText;
//if (v != null)
// propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
}
XmlHelher帮助类-----xml
最新推荐文章于 2023-05-09 14:09:06 发布